php array_multisort如何工作?

php*_*han 5 php arrays sorting

我有一些问题需要了解array_multisort

看两个值相同时的排序方式:

 $a1=array("Dog","Dog","Cat");
 $a2=array("Pluto","Fido","Missy");
 array_multisort($a1,$a2);
 print_r($a1);
 print_r($a2);
Run Code Online (Sandbox Code Playgroud)

上面代码的输出将是:

 Array ( [0] => Cat [1] => Dog [2] => Dog )
 Array ( [0] => Missy [1] => Fido [2] => Pluto )
Run Code Online (Sandbox Code Playgroud)

让我知道为什么Missy是第一个,如果你通过提升它必须是Array([0] => Fido,[1] => Missy,[2] => Pluto)下降反之亦然

也看到这个

使用排序参数:

$a1=array("Dog","Dog","Cat");
$a2=array("Pluto","Fido","Missy"); 
array_multisort($a1,SORT_ASC,$a2,SORT_DESC); 
print_r($a1); 
print_r($a2);
Run Code Online (Sandbox Code Playgroud)

上面代码的输出将是:

 Array ( [0] => Cat [1] => Dog [2] => Dog ) 
 Array ( [0] => Missy [1] => Pluto [2] => Fido )
Run Code Online (Sandbox Code Playgroud)

但是数组([0] => Missy [1] => Pluto [2] => Fido)不是在SORT_DESC是某种类型的混合.

有人可以解释一下array_multisort是如何工作的,这样我就能理解它是如何工作的.

Mar*_*rio 10

好吧,您正在以与Excel等程序类似的方式对数组进行排序.每个数组对应一列.

首先,所有数组都按给定的第一个数组排序.如果存在相同的值,则受影响的值将按给定的第二个数组排序.如果值再次相等,则使用第三个数组等.

换句话说:数组是使用所有数组排序的,但是从右边开始(如果你假设它真的按所有列排序一次).

对于您的特定示例(第二个):

首先,您希望按升序排序,因此Cat将是第一个.因此,最后一个数组元素将移动到两个数组中的第一个位置.其他两个要素Dog是平等的.这会导致函数查看下一个数组.它被告知要按降序排序这个数组,所以Pluto先来.在这种情况下,这导致元素根本不移动(因为它们的顺序已经正确).