这是我的代码:
$numbers = array(10, 100, 100, 0);
$names = array("Alex", "Jane", "Amanda", "Debra");
array_multisort($numbers, $names);
print_r($numbers);
print_r($names);
以上代码输出:
Array
(
[0] => 0
[1] => 10
[2] => 100
[3] => 100
)
Array
(
[0] => Debra
[1] => Alex
[2] => Amanda
[3] => Jane
)
为什么第二个数组的排序不正确?如果它是正确的,任何人都可以解释它是如何正确的?
感谢。
答案 0 :(得分:0)
这是array_multisort
的预期行为。对第一个数组进行排序,并对第二个数组进行重新组织,使其值继续对应于第一个数组的相同值。请注意,在第一个数组具有相等值(两个100
s)的情况下,第二个数组的值在内部排序(因此Amanda
位于Jane
之前)。
如果您想独立排序两个数组,则可以使用两个sort
次调用。
答案 1 :(得分:0)
是的,这是正确的。你正在以错误的方式使用PHP的'array_multisort'函数。它不会对两个数组进行排序,但会对第一个数组进行排序,第二个数组将按照与第一个数组相对应的顺序进行排序。
$ numbers排序前:
return $new_inventory+$defaults;
排序后:
(
[0] => 10
[1] => 100
[2] => 100
[3] => 0
)
因此,第二个数组不会得到排序,但会根据第一个数组得到它的元素。
(
[0] => 0 (position before sorting - 3rd)
[1] => 10 (position before sorting - 0)
[2] => 100 (position before sorting - 2 or 1)
[3] => 100 (position before sorting - 2 or 1)
)
答案 2 :(得分:0)
简单易懂:
array_multisort($ names,SORT_ASC,SORT_STRING,
$ numbers,SORT_NUMERIC,SORT_ASC);
的print_r($名);
答案 3 :(得分:0)
PHP array_multisort 用于对第一个数组进行排序,并根据第一个数组的项排列第二个数组,而不是对它们进行排序。
答案 4 :(得分:0)
$ numbers = array(10,100,100,0);
$ names = array(“Alex”,“Jane”,“Amanda”,“Debra”);
array_multisort($ names,SORT_ASC,SORT_STRING);
在array_multisort($号);
的print_r($名);
的print_r($编号);