首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP array_merge() 合併多個陣列:鍵值覆蓋與數字索引重新排序行為說明

     編輯:PHP 綜合知識

前言

array_merge() 將一或多個陣列合併,**字串鍵相同者後者覆蓋前者**,**數字鍵則重新從 0 開始連續編號**。

基本範例

<?php
$first  = ["aa", "bb", "cc"];        // 數字索引 0,1,2
$second = [11, 22, 33];              // 數字索引 0,1,2
$merged = array_merge($first, $second);

foreach ($merged as $val) echo "$val<br>";
/* 輸出:
aa
bb
cc
11
22
33
*/
// 結果陣列索引為 0,1,2,3,4,5(重新排序)
?>

字串鍵覆蓋行為

$a = ['x' => 1, 'y' => 2];
$b = ['y' => 99, 'z' => 3];
print_r(array_merge($a, $b));
/* 結果:
Array
(
    [x] => 1
    [y] => 99   ← $b 覆蓋 $a
    [z] => 3
)
*/

數字鍵重新排序行為

$a = [5 => 'a', 7 => 'b'];
$b = [1 => 'c'];
print_r(array_merge($a, $b));
/* 結果:
Array
(
    [0] => 'a'  ← 原鍵 5 變 0
    [1] => 'b'  ← 原鍵 7 變 1
    [2] => 'c'  ← 原鍵 1 變 2
)
*/

保留數字鍵的替代方案

  • + 運算子:$a + $b 保留左側鍵值,右側同鍵**不覆蓋**。
  • array_replace():遞迴替換,保留數字鍵,**同鍵以右側為準**。
  • array_merge_recursive():同鍵不覆蓋,改將值合併為陣列。

比較表

函數/運算子字串鍵衝突數字鍵處理遞迴
array_merge後者覆蓋重新編號 (0...)否
array_merge_recursive合併為陣列重新編號是
array_replace後者覆蓋**保留原鍵**是
$a + $b**左側優先****保留原鍵**否

結語

理解 array_merge() 的鍵值處理規則對避免資料遺失至關重要。需保留數字索引時請用 array_replace() 或 +;需遞迴合併多維陣列用 array_merge_recursive() 或 array_replace_recursive()。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved