laravel按日期排序数组

时间:2016-06-01 11:47:01

标签: php arrays laravel sorting

你好朋友我有一个看起来像这样的数组:

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

任何人都可以帮助我吗?我猜这个错误是因为它是一个收集函数?是不是可以用这个函数对我的数组进行排序?

非常感谢提前!

4 个答案:

答案 0 :(得分:4)

您可以转换为collection,调用sortBy(),然后转换为array,全部一行。

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

答案 1 :(得分:2)

您可以将usort()与自定义联合功能一起使用。

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

答案 2 :(得分: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);
}

答案 3 :(得分:0)

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

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