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先来.在这种情况下,这导致元素根本不移动(因为它们的顺序已经正确).
| 归档时间: |
|
| 查看次数: |
3252 次 |
| 最近记录: |