MultiDim数组排序查询

时间:2014-10-24 10:50:30

标签: php

我用它来对多维数组进行排序

    usort($items, function($a, $b) {
        return $a['item'] - $b['item'];
    });

在分类之前

Array
(
[0] => Array
    (
        [uuid] => 3199d45c-a5c2-474c-8768-06e18fdf6ace
        [status] => active
        [item] => Spar
    )

[1] => Array
    (
        [uuid] => 4001
        [status] => active
        [item] => Starbucks
    )

[2] => Array
    (
        [uuid] => 4002
        [status] => active
        [item] => Burger King
    )

[3] => Array
    (
        [uuid] => 4003
        [status] => active
        [item] => Steers
    )

[4] => Array
    (
        [uuid] => 4004
        [status] => active
        [item] => Hungry Lion
    )

[5] => Array
    (
        [uuid] => 658bee38-04c2-4f27-812f-dd46c3652dcb
        [status] => active
        [item] => Deslies
    )

[6] => Array
    (
        [uuid] => a5c2b1dc-584d-4175-9d21-e7a910606835
        [status] => active
        [item] => Nandos
    )

[7] => Array
    (
        [uuid] => e1a14e51-0cfc-47c6-8ae8-d408fd43571e
        [status] => active
        [item] => OK
    )

)

排序后

Array
(
[0] => Array
    (
        [uuid] => 658bee38-04c2-4f27-812f-dd46c3652dcb
        [status] => active
        [item] => Deslies
    )

[1] => Array
    (
        [uuid] => a5c2b1dc-584d-4175-9d21-e7a910606835
        [status] => active
        [item] => Nandos
    )

[2] => Array
    (
        [uuid] => e1a14e51-0cfc-47c6-8ae8-d408fd43571e
        [status] => active
        [item] => OK
    )

[3] => Array
    (
        [uuid] => 4004
        [status] => active
        [item] => Hungry Lion
    )

[4] => Array
    (
        [uuid] => 4003
        [status] => active
        [item] => Steers
    )

[5] => Array
    (
        [uuid] => 4001
        [status] => active
        [item] => Starbucks
    )

[6] => Array
    (
        [uuid] => 4002
        [status] => active
        [item] => Burger King
    )

[7] => Array
    (
        [uuid] => 3199d45c-a5c2-474c-8768-06e18fdf6ace
        [status] => active
        [item] => Spar
    )

)

为什么排序后Burger King不会先排在第一位?

2 个答案:

答案 0 :(得分:2)

比较它们,然后根据'项目'返回结果。你有..

例如:

function compare($a, $b)
{
    return strcmp($a["item"], $b["item"]);
}

usort($items, "compare");

while (list($key, $value) = each($items)) {
    echo "\$items[$key]: " . $value["item"] . "\n";
}

这里有一些例子:READ THE MANUAL

答案 1 :(得分:1)

您正在使用的回调函数用于比较整数,而不是字符串
要比较字符串而不是整数,请使用strcmp()而不是直接减去两个字符串。

usort($items, function($a, $b) {
    return strcmp($a['item'], $b['item']);
});