| 特性 | array_merge() | + 運算子 |
|---|---|---|
| 數字索引 | 重新索引(0 起始連續) | 保留原索引,左邊優先 |
| 字串鍵名衝突 | 右邊覆蓋左邊 | 左邊優先,右邊忽略 |
| 多陣列合併 | 支援任意個數 | 僅兩個陣列 |
| 回傳值 | 新陣列 | 新陣列 |
a, 1=>b...
$b = ['a','x','y']; // 實際為 0=>a, 1=>x, 2=>y
array_merge($a, $b); // [a,b,c,d,e,f,a,x,y] 數字索引重新編號,值重複保留
$a + $b; // [a,b,c,d,e,f] 索引衝突,左邊優先
$b + $a; // [a,x,y,d,e,f] $b 索引 0-2,$a 索引 3-5
'a', 2=>'b', 3=>'c', 4=>'d', 5=>'e', 6=>'f'];
$b = [1=>'a', 7=>'x', 8=>'y'];
array_merge($a, $b); // [0=>a,1=>b,2=>c,3=>d,4=>e,5=>f,6=>a,7=>x,8=>y] 數字鍵重新索引
$a + $b; // [1=>a,2=>b,3=>c,4=>d,5=>e,6=>f,7=>x,8=>y] 鍵 1 衝突左邊優先
$b + $a; // [1=>a,7=>x,8=>y,2=>b,3=>c,4=>d,5=>e,6=>f] $b 鍵 1,7,8,$a 補 2-6
'a', 10=>'b'];
array_merge($a); // [0=>'a', 1=>'b'] 重新索引為 0 起始連續
array_merge(最常見,如配置合併)。+(如分頁資料合併、索引有業務含義)。array_merge($a, $b, $c...)。array_merge 適合關聯陣列合併(覆蓋語義),+ 適合索引陣列聯集(優先語義)。理解兩者在數字/字串鍵名上的根本差異,避免資料遺失或索引錯亂。