首頁 > 後端開發 > PHP問題 > php數組合併有幾種方式

php數組合併有幾種方式

青灯夜游
發布: 2023-03-10 08:48:01
原創
27150 人瀏覽過

php數組組合並有4種方式,分別為:1、使用加號「 」運算符,語法「陣列1 陣列2 ..」;2、使用array_push()函數;3、使用array_merge( )函數;4、使用array_merge_recursive()函數。

php數組合併有幾種方式

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

1、使用加號「 」運算子:

直接將兩個數組的值合併成為一個數組;

$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'b',4,5,'b'=>'c',6,7,'a'];
$c = $a + $b;

print_r($a);
print_r($b);
print_r($c);

//$a
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [a] => a
)

//$b
Array
(
    [a] => b
    [0] => 4
    [1] => 5
    [b] => c
    [2] => 6
    [3] => 7
    [4] => a
)

//$c
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [a] => a
    [b] => c
    [3] => 7
    [4] => a
)
登入後複製

採用" "合併數組,如果鍵相同的情況下,前面的數組值會覆寫後面的數組值。

2、使用array_push()函數

將某個變數放入另一個陣列當中

$a = [1,'a'=>'aa',2,'b'=>'bb'];
$b = [1,'a'=>'aa',2,'b'=>'bb'];
print_r($a);
print_r($b);
array_push($a, $b);
print_r($a);

//$a
Array
(
    [0] => 1
    [a] => aa
    [1] => 2
    [b] => bb
)

//$b
Array
(
    [0] => 1
    [a] => aa
    [1] => 2
    [b] => bb
)

// array_push过后的$a
Array
(
    [0] => 1
    [a] => aa
    [1] => 2
    [b] => bb
    [2] => Array
        (
            [0] => 1
            [a] => aa
            [1] => 2
            [b] => bb
        )

)
登入後複製

透過列印的值可以看出,變數進入陣列後,對應的數字索引必然是目前陣列中最小的數字索引1(如果目前陣列不存在數字索引,新增元素對應的索引為0)

#3、使用array_merge()函數

#  直接將兩個數組進行合併,兩個數組鍵相同的情況,後面數組的值覆蓋前面數組的值

$a = [1,'2'=>2,'a'=>'a','b'=>'b'];
$b = [1,'2'=>3,'a'=>'c','b'=>'d','c'=>'e'];
$c = array_merge($a,$b);
print_r($a);
print_r($b);
print_r($c);

//$a
Array
(
    [0] => 1
    [2] => 2
    [a] => a
    [b] => b
)

//$b
Array
(
    [0] => 1
    [2] => 3
    [a] => c
    [b] => d
    [c] => e
)

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

可以看出,兩個數組鍵相同的情況,後面數組的值覆蓋前面數組的值。但對於數字索引或數字字串索引,會依照順序進行重置(第一個陣列的第一個數字索引元素從0開始依序填入)

4、使用array_merge_recursive()函數

合併數組,當遇到相同的鍵將該鍵中值合併為一個子數組

$a = [1,'2'=>2,'a'=>'a','b'=>'b'];
$b = [1,'2'=>3,'a'=>'a','b'=>'d','c'=>'e'];
$c = array_merge_recursive($a,$b);
print_r($a);
print_r($b);
print_r($c);


//$a
Array
(
    [0] => 1
    [2] => 2
    [a] => a
    [b] => b
)

//$b
Array
(
    [0] => 1
    [2] => 3
    [a] => a
    [b] => d
    [c] => e
)

//$c
Array
(
    [0] => 1
    [1] => 2
    [a] => Array
        (
            [0] => a
            [1] => a
        )

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

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

採用"array_merge_recursive"方法時,會將相同鍵的元素,整合成為一個新的數組,並保持鍵名不變,作為合併數組($a與$b組合後的數組)的子元素。但是對於數字索引或數字字串索引,會依照順序進行重置(第一個陣列的第一個數字索引元素從0開始依序填入)。即使對應的數字索引相同,也不會將相同索引的元素整合成功一個子陣列。

推薦學習:《PHP影片教學

以上是php數組合併有幾種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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