<?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排序。