php 根據一個數組對另外一個數組進行排序問題
阿新 • • 發佈:2019-02-07
現在需要根據keyArr陣列給valueArr陣列進行排序:
$valueArr = [
'200' => 'ni',
'100' => 'hao',
'300' => 'aaa'
$keyArr = [100,200,300];
$valueArr = [
'200' => 'ni',
'100' => 'hao',
'300' => 'aaa'
];
從網上查到的一個方法是利用array_merge函式相同key後者會覆蓋前者特性,進行如下測試:
var_dump(array_flip($keyArr), $valueArr);
結果並不是預期效果,結果為:
array(6) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
[3]=>
string(2) "ni"
[4]=>
string(3) "hao"
[5]=>
string(3) "aaa"
}
官網檢視array_merge解釋發現有一條:Values in the input array with numeric keys will be renumbered with incrementing keys starting from zero in the result array.
結果是數字索引導致的,把陣列索引換為字串結果是可以(注:數字型別的字串也不行)
但是問題還沒解決就是數字型別的索引該怎麼辦,總不能來一個迴圈吧
最後發現array_replace方法完全可以達到預期效果:
var_dump(array_flip($keyArr), $valueArr);
array(3) {
[100]=>
string(3) "hao"
[200]=>
string(2) "ni"
[300]=>
string(3) "aaa"
}
到此問題解決