数组按'asc'顺序排序php / Cakephp

时间:2015-02-27 09:27:38

标签: php arrays sorting cakephp

我想在'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');

但它给出了一些错误。

3 个答案:

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