三维数组的排序

时间:2016-02-18 16:35:25

标签: php arrays oop multidimensional-array

我正在尝试使用值填充数组:

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 )进行排序?

非常感谢

2 个答案:

答案 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);