我想在'eta'的基础上对这个数组进行排序.Lowest 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'的基础上对这个数组进行排序.Lowest eta必须先来。
我尝试使用此功能:
$result = Set::sort($array, '{n}', 'asc');
但它给出了一些错误。
答案 0 :(得分:2)
您可以使用usort:
usort($yourArray, function($a, $b) {
return $a['eta'] - $b['eta'];
});
Usort允许将自定义分拣回调函数定义为第二个参数。在此方法的主体内部,您可以定义比较算法。
如果方法返回一个负数,它会将$ b变量向下移动到数组中,返回一个正数将向上移动$ b并返回0保持$ b在同一个地方。
为简单起见,我们已经定义了一个内联回调方法。
答案 1 :(得分:1)
我在cakephp中做到了这一点:
我的答案是:
Hash::sort($array, '{n}.eta', 'asc');
答案 2 :(得分:0)
您可以使用数组多重排序功能。
请点击此链接以获取更多信息。 http://php.net/manual/en/function.array-multisort.php