首頁 > 後端開發 > PHP問題 > php 不同陣列相加

php 不同陣列相加

WBOY
發布: 2023-05-24 18:06:09
原創
497 人瀏覽過

在 PHP 中,陣列是一種非常靈活且常用的資料類型,它可以儲存多個值(元素),而這些值可以是任意資料類型。當我們需要對不同陣列進行相加的操作時,需要了解不同的相加方式以及對應的注意事項。

  1. 使用array_merge() 函數合併數組

array_merge() 函數可以將兩個或多個數組合併成一個新數組,它將所有的輸入數組中的元素放入新數組中,索引重新從0 開始,並且可以保留原始數組的鍵名,不會覆蓋相同鍵名的值。以下是一個範例:

$array1 = array('a', 'b', 'c');
$array2 = array('d', 'e', 'f');
$array3 = array_merge($array1, $array2);
print_r($array3);
登入後複製

輸出結果為:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)
登入後複製

要注意的是,如果相同鍵名的值是數組,那麼array_merge() 函數將會遞歸合併它們,也就是將子數組合併在一起。如果鍵名是數字,合併後的結果會自動轉換為數值索引陣列。

  1. 使用運算符合併數組

在PHP 中,可以使用運算子將兩個數組合併為一個新數組,但與array_merge() 函數不同的是, 運算子只會保留左側數組中的鍵名和值,右側數組中相同鍵名的值將被忽略。下面是一個範例:

$array1 = array('a', 'b', 'c');
$array2 = array('d' => 1, 'e', 'f');
$array3 = $array1 + $array2;
print_r($array3);
登入後複製

輸出結果為:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [d] => 1
    [1] => e
    [2] => f
)
登入後複製

要注意的是,如果陣列的鍵名是字串,那麼 運算子會將它們當作關聯陣列來處理。如果左側陣列包含數字索引鍵名和字串索引鍵名,那麼右側陣列中的字串索引鍵名將會被忽略。

  1. 使用array_merge_recursive() 函數合併數組(遞歸合併)

如果相同鍵名的值是數組,那麼使用array_merge() 函數合併時只會覆寫前一個數組中對應鍵名的值,而不會遞歸合併子數組。如果需要遞歸合併相同鍵名的子數組,可以使用 array_merge_recursive() 函數。以下是一個範例:

$array1 = array('a' => array('b'), 'c');
$array2 = array('a' => array('d'), 'e');
$array3 = array_merge_recursive($array1, $array2);
print_r($array3);
登入後複製

輸出結果為:

Array
(
    [a] => Array
        (
            [0] => b
            [1] => d
        )

    [0] => c
    [1] => e
)
登入後複製

要注意的是,array_merge_recursive() 函數會將子數組合在一起,並且將相同鍵名稱的值合併成一個數組。

  1. 使用array_replace() 函數合併數組(替換合併)

array_replace() 函數可以將兩個或多個數組合併成一個新數組,但與array_merge () 函數不同的是,相同鍵名的值將會被後面的值取代而不是合併成一個陣列。以下是範例:

$array1 = array('a', 'b', 'c');
$array2 = array('b', 'd');
$array3 = array_replace($array1, $array2);
print_r($array3);
登入後複製

輸出結果為:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
登入後複製

要注意的是,array_replace() 函數只會取代鍵名存在的值,如果一個陣列中存在的鍵名在另一個數組中不存在,那麼它的值將保持不變。

綜合來說,PHP 提供了多種合併陣列的方法,我們可以根據實際需求來選擇使用哪一種方法。對於需要保留原始數組鍵名的情況,可以使用array_merge() 函數;如果需要遞歸合併子數組,可以使用array_merge_recursive() 函數;如果需要將相同鍵名的值替換而不是合併成一個數組,可以使用array_replace () 函數。

以上是php 不同陣列相加的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板