一、PHP三種數組合並方式
目前工作中接觸到的PHP數組合並方式主要有三種:
1、+操作符
2、array_merge()
3、array_merge_recursive()
它們的區別主要體現在對於相關鍵名(數字鍵名、字符串鍵名)的處理方式。
二、相同字符串鍵
$arrFirst = [ "first_key" => 1, "second_key" => 1, "third_key" => 1, ]; $arrSecond = [ "first_key" => 2, "second_key" => 2, "fourth_key" => 2, ]; //對於重復的字符串鍵,array_merge后,后面數組的鍵值會覆蓋前面的 echo sprintf("\narray_merge result:\n%s", print_r(array_merge($arrFirst, $arrSecond), true)); //對於重復的字符串鍵,+操作后,前面數組的鍵值會覆蓋后面的 echo sprintf("\narray + result:\n%s", print_r($arrFirst + $arrSecond, true)); //對於重復的字符串鍵,array_merge_recursive后,相同鍵名的鍵值會被合並到同一數組中(會遞歸) echo sprintf("\narray_merge_recursive result:\n%s", print_r(array_merge_recursive($arrFirst, $arrSecond), true));
運行結果:
三、相同數字鍵
$arrFirst = [ 111 => "first", 222 => "first", "first" //會指定默認的數字鍵223 ]; $arrSecond = [ 111 => "second", 333 => "second", "second" //會指定默認的數字鍵334 ]; //對於重復的數字鍵,+操作后,前面數組的鍵值會覆蓋后面的,保留之前數字鍵 echo sprintf("\narray + result:\n%s", print_r($arrFirst + $arrSecond, true)); //對於重復的數字鍵,array_merge后,重排數字鍵,不會覆蓋 echo sprintf("\narray_merge result:\n%s", print_r(array_merge($arrFirst, $arrSecond), true)); //對於重復的數字鍵,array_merge_recursive后,重排數字鍵,不會覆蓋 echo sprintf("\narray_merge_recursive result:\n%s", print_r(array_merge_recursive($arrFirst, $arrSecond), true));