【问题标题】:laravel sort an array by datelaravel 按日期对数组进行排序
【发布时间】:2016-09-30 18:25:38
【问题描述】:

你好朋友,我有一个如下所示的数组:

array:3 [▼
  0 => array:6 [▼
    "date" => "2016-05-31 15:08:33"
    0 => "31 May 16"
    1 => "aze"
    2 => "2"
    3 => "hi"
    4 => "487841464704194.jpg"
  ]
  1 => array:6 [▼
    "date" => "2016-05-31 15:26:09"
    0 => "31 May 16"
    1 => "aze"
    2 => "2"
    3 => "hey"
    4 => "487841464704194.jpg"
  ]
  2 => array:6 [▼
    "date" => "2016-06-01 11:33:06"
    0 => "01 Jun 16"
    1 => "aze"
    2 => "2"
    3 => "Dm me please"
    4 => "487841464704194.jpg"
  ]
]

我的目标是按date 对其进行排序。所以从新到旧。

如果尝试这样做:

$comarrSorted = $comarr->sortByDesc('date');
dd($comarrSorted);

但是我得到了这个讨厌的错误:

Call to a member function sortByDesc() on array

谁能帮帮我?我猜这个错误是因为它是一个收集功能引起的?难道不能用这个函数对我的数组进行排序吗?

提前非常感谢!

【问题讨论】:

标签: php arrays laravel sorting


【解决方案1】:

您可以将usort() 与自定义comarison 函数一起使用。

function sortByDate($arr1, $arr2)
{
    $tmp1 = strtotime($arr1['date']);
    $tmp2 = strtotime($arr2['date']);
    return $tmp1 - $tmp2;
}
usort($array, 'date');

【讨论】:

  • 但我只有 1 个数组,我需要 $arr1 和 $arr2 做什么?
  • 我添加了新答案。
【解决方案2】:

你必须创建自己的函数

array_sort_by_column($array, 'date');


function array_sort_by_column(&$array, $column, $direction = SORT_ASC) {
    $reference_array = array();

    foreach($array as $key => $row) {
        $reference_array[$key] = $row[$column];
    }

    array_multisort($reference_array, $direction, $array);
}

【讨论】:

  • 一定有更简单的方法可以用 Laravel 做到这一点,还是我弄错了?
  • 这是更简单的方法,我认为,laravel 不提供任何与数组相关的功能。如果您有更好的答案,请告诉我。
  • stackoverflow.com/a/52368760/10888237 下面这个答案是更好的解决方案。
【解决方案3】:

您可以转换为collection,调用sortBy(),然后再转换回array,这一切都在一条线上。

$sortedArr = collect($array)->sortBy('date')->all();

【讨论】:

  • 这会返回一个集合,为了将它转换回一个数组,我们可以使用values() 函数。 $sortedArr = collect($array)->sortBy('date')->values();
【解决方案4】:

您可以使用此解决方案获得结果:

collect($yourArray)->sortBy('Key')->values();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2014-10-19
    相关资源
    最近更新 更多