我想根据"eta"对这个数组进行排序。最低的eta必须排在第一位。
我的数组是:
Array
(
[0] => Array
(
[company] => Uber
[type] => Saloon
[eta] => 8
[destination_required] => N
[reject_booking_request] => N
)
[1] => Array
(
[company] => greentomato
[type] => Saloon
[company_rating] => 80%
[eta] => 10
[destination_required] => N
[reject_booking_request] => N
)
[2] => Array
(
[company] => CATALINA
[type] => Exec
[eta] => 12
[destination_required] => Y
[reject_booking_request] => N
)
[3] => Array
(
[company] => Uber
[type] => Exec
[eta] => 15
[destination_required] => N
[reject_booking_request] => N
)
[4] => Array
(
[company] => Hailo
[type] => Taxi
[eta] => 1
[destination_required] => Y
[reject_booking_request] => Y
)
)
我想根据"eta"对这个数组进行排序。最低的eta必须排在第一位。
我试着使用这个:
$result = Set::sort($array, '{n}', 'asc');
但它给出了一些错误。
您可以使用usort:
usort($yourArray, function($a, $b) {
return $a['eta'] - $b['eta'];
});
Usort允许将自定义排序回调函数定义为第二个参数。在这个方法的内部,你可以定义你的比较算法。
如果该方法返回一个负数,它将使$b变量在数组中下移,返回一个正数会使$b在数组中上移,返回0则使$b保持在同一位置。
为了简单起见,我们定义了一个内联回调方法。
我在cakehp:中做到了这一点
我的答案是:
Hash::sort($array, '{n}.eta', 'asc');
您可以使用数组多排序功能。
有关详细信息,请访问链接。http://php.net/manual/en/function.array-multisort.php