数组排序在';asc';订购php/Cakephp


Array sort in 'asc' order php/Cakephp

我想根据"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