當前位置: 首頁> 最新文章列表> [怎麼用array_replace 合併多個數組? PHP 實用技巧詳解

[怎麼用array_replace 合併多個數組? PHP 實用技巧詳解

gitbox 2025-09-10

怎麼用array_replace合併多個數組? PHP 實用技巧詳解

在PHP 編程中,數組操作是非常常見的任務。我們通常需要合併數組、替換數組中的元素,或者合併多個數組的元素。這時, array_replace()函數是一個非常有用的工具,它不僅可以替換數組中的值,還可以將多個數組合併在一起。

本文將詳細介紹array_replace()函數的用法,幫助你更好地理解如何在PHP 中合併多個數組。

什麼是array_replace

array_replace()是一個PHP 內建函數,用來將一個或多個數組中的元素合併到第一個數組中。如果數組中存在相同的鍵,則後面的數組中的值會替換掉第一個數組中相同鍵的值。換句話說,它會按照順序依次用後續數組中的元素替換前一個數組中的元素。

函數語法

<span><span><span class="hljs-title function_ invoke__">array_replace</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $array1 :第一個數組,作為目標數組,將被其它數組的元素替換。

  • $arrays :一個或多個數組,這些數組的值會替換$array1中對應鍵的值。

示例

基本示例

假設我們有兩個數組,我們希望將第二個數組的值合併到第一個數組中:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-string">"a"</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_replace</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [a] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [b] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [c] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

在這個例子中, array_replace()$array2中的值替換了$array1中相同鍵(即'b' )的值,同時將$array2中新的鍵值對( 'c' => 4 )添加到了結果數組中。

合併多個數組

array_replace()也支持傳入多個數組,你可以用它來合併多個數組中的元素。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-string">"a"</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$array3</span></span><span> = [</span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-string">"d"</span></span><span> =&gt; </span><span><span class="hljs-number">5</span></span><span>];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_replace</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-variable">$array3</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [a] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [b] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [c] =&gt; </span><span><span class="hljs-number">4</span></span><span>
    [d] =&gt; </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>

在這個例子中, $array2中的值替換了$array1中相應的鍵( 'b' ),而$array3中的鍵值對被直接添加到結果數組中。

array_replacearray_merge的區別

雖然array_replace()可以用來合併多個數組,但它與array_merge()函數有些不同。

  1. array_replace() :它會根據鍵替換原數組中的值。也就是說,如果有相同的鍵,後來的數組會覆蓋前面的數組中的相應鍵。

  2. array_merge() :它會將數組合併,而不管鍵是否相同。對於索引數組,它會重新索引;對於關聯數組,它會保留原始鍵。

例如:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-string">"a"</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-number">4</span></span><span>];

</span><span><span class="hljs-variable">$result_merge</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result_merge</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [b] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [c] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

在使用array_merge()時,數組的索引會被重新排序,而在array_replace()中,索引和鍵會保持不變。

注意事項

  • array_replace()只會替換原數組中存在的鍵,對於不匹配的鍵,後面的數組會直接添加到結果中。

  • 如果數組中有數字鍵, array_replace()會根據鍵來替換,可能會導致數值鍵的順序發生變化。而array_merge()會重新索引數字鍵。

總結

array_replace()是一個非常強大的函數,適用於替換數組中已有的元素,或者將多個數組的元素合併到一個數組中。在PHP 中操作數組時,掌握array_replace()的用法,可以讓你的代碼更加簡潔高效。

如果你在處理多個數組合併時,需要關注鍵值的替換和添加, array_replace()絕對是你必不可少的工具之一。