我正在尝试使用值填充数组:
foreach($pallets as $pallet){
$i++;
$orders[$i]['id'] = $pallet->id;
$orders[$i]['reference'] = $pallet->reference;
$orders[$i]['created_at'] = $pallet->created_at;
$orders[$i]['status'] = $pallet->getStatus();
}
如何通过 $i
属性在数组中对值( created_at
)进行排序?
非常感谢
答案 0 :(得分:0)
使用usort(http://php.net/manual/en/function.usort.php):
function cmp($a, $b)
{
if ($a["created_at"] == $b["created_at"]) {
return 0;
}
return ($a["created_at"] < $b["created_at"]) ? -1 : 1;
}
usort($orders, "cmp");
foreach ($orders as $key => $value) {
echo "$key: $value\n";
}
答案 1 :(得分:0)
提取created_at
列并对其进行排序,同时对原始数组进行排序:
array_multisort(array_column($orders, 'created_at'), SORT_ASC, $orders);
这假设created_at
采用正确排序的格式,例如2016-02-18 12:00
。如果没有,但如果它仍然是有效的日期/时间,请尝试:
array_multisort(array_map('strtotime', array_column($orders, 'created_at')),
SORT_ASC,
$orders);