1. 程式人生 > >php 根據一個數組對另外一個數組進行排序問題

php 根據一個數組對另外一個數組進行排序問題

現在需要根據keyArr陣列給valueArr陣列進行排序:

$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"
}

到此問題解決