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

Usort multidimensional array in PHP isn't working for me

直接使用文档中的示例,我看不出为什么会得到这样的结果。

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 的目的是根据多维数组中的值进行组织。有时它对其进行排序,有时它只是给出一个随机顺序作为输出数组。我错过了什么吗?另外,这不是重复的问题,请仔细阅读本网站上没有类似的问题。

在您的示例中,您使用函数 strcmp 来比较 整数 ,但此函数用于比较 二进制安全字符串 。您需要使用另一个函数或仅使用像 > 这样的运算符。因此,您的数组已按 PHP.

正确排序