PHP中的Usort多维数组对我不起作用

时间:2017-07-15 23:54:02

标签: php multidimensional-array usort

直接使用文档中的示例,我无法弄清楚为什么我会得到我的结果。

function cmp($a, $b)
{
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = 1000;
$fruits[1]["fruit"] = 600;
$fruits[2]["fruit"] = 2180;

echo ("<pre>");
echo " before  \n";
print_r($fruits);
echo ("</pre>");

usort($fruits, "cmp");

echo ("<pre>");
echo "  after \n";
print_r($fruits);
echo ("</pre>");

结果如下:

 before  
Array
(
    [0] => Array
        (
            [fruit] => 1000
        )

    [1] => Array
        (
            [fruit] => 600
        )

    [2] => Array
        (
            [fruit] => 2180
        )

)
  after 
Array
(
    [0] => Array
        (
            [fruit] => 1000
        )

[1] => Array
    (
        [fruit] => 2180
    )

[2] => Array
    (
        [fruit] => 600
    )

我认为usort意在根据多维数组中的值进行组织。有时它会对它进行排序,有时它只是给出一个随机顺序作为输出数组。我错过了什么吗?此外,这不是一个重复的问题,请仔细阅读,在这个网站上没有任何类似的东西。

1 个答案:

答案 0 :(得分:0)

在您的示例中,您使用函数strcmp来比较整数,但此函数用于比较二进制安全字符串。您需要使用其他函数或仅使用>之类的运算符。因此,您的数组已由PHP正确排序。