<?php
$arrayData = array(
array("name"=>"泰山", "age"=>"23"),
array("name"=>"黄山", "age"=>"43"),
array("name"=>"嵩山", "age"=>"18"),
array("name"=>"庐山", "age"=>"21"),
array("name"=>"42", "age"=>"18"),
);
$array = ["23", "43", "18", "21", "42"];
array_multisort($array, SORT_DESC , $arrayData);
var_dump($arrayData);
exit;
?>
//输出, 从下面能看到 array("name"=>"42", "age"=>"18") 排第二个,why?
array(5) {
[0]=>
array(2) {
["name"]=>
string(6) "黄山"
["age"]=>
string(2) "43"
}
[1]=>
array(2) {
["name"]=>
string(2) "42"
["age"]=>
string(2) "18"
}
[2]=>
array(2) {
["name"]=>
string(6) "泰山"
["age"]=>
string(2) "23"
}
[3]=>
array(2) {
["name"]=>
string(6) "庐山"
["age"]=>
string(2) "21"
}
[4]=>
array(2) {
["name"]=>
string(6) "嵩山"
["age"]=>
string(2) "18"
}
}
分析
从上图可以看出,首先,$array 与$arrayData的值对应的键是一一相应的,不会发生改变。
然而 SORT_DESC 进行对 $array 倒序排序:[43, 42, 23, 21, 18]
接着$arrayData 指向42的那个数组 aray('name'=>42, 'age'=>18) 排序的位置 跟 $arr的42位置一样,排在第二位
网上很多写法
array_multisort(array_column($subList,'sort'),SORT_DESC , $subList);
很多时候,我们误导了 以为 按照sort排序,其实真正原理并不是按照sort排序,是按照sort的对应的值位排序。
但最终效果 却达到按照sort排序。