PHP中的Usort多维数组isn';他不为我工作
直接使用文档中的示例,我看不出为什么我会得到这样的结果PHP中的Usort多维数组isn';他不为我工作,php,multidimensional-array,usort,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 ("
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>");
)
我认为usort是基于多维数组中的值进行组织的。有时它对它进行排序,有时它只是给出一个随机顺序作为输出数组。我错过什么了吗?此外,这不是一个重复的问题,请仔细阅读此网站上没有类似的问题。在您的示例中,您使用此函数比较整数,但此函数用于比较二进制安全字符串。您需要使用另一个函数或仅使用类似于
的运算符。因此,您的数组已通过PHP正确排序。我是否遗漏了什么?是的,整数不是字符串,所以不要使用字符串比较函数。请始终假设您最初输入的是错误的。不是PHP的usort函数被破坏了;在这种情况下,这是用户的逻辑。学会正确识别您正在使用的类型和操作。您将数字作为字符串进行比较,PHP将对这些字符串进行适当排序。
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
)