PHP三種陣列合併方式區別示例

2021-08-19 22:27:02 字數 2804 閱讀 7714

目前工作中接觸到的php陣列合併方式主要有三種:

1、+操作符

2、array_merge()

3、array_merge_recursive()

<?php 

$arrfirst = [

"first_key" => 1,

"second_key" => 1,

"third_key" => 1,

];$arrsecond = [

"first_key" => 2,

"second_key" => 2,

"fourth_key" => 2,

];//對於重複的字串鍵,array_merge後,後面陣列的鍵值會覆蓋前面的

echo sprintf("\narray_merge result:\n%s", print_r(array_merge($arrfirst, $arrsecond), true));

//對於重複的字串鍵,+操作後,前面陣列的鍵值會覆蓋後面的

echo sprintf("\narray + result:\n%s", print_r($arrfirst + $arrsecond, true));

//對於重複的字串鍵,array_merge_recursive後,相同鍵名的鍵值會被合併到同一陣列中(會遞迴)

echo sprintf("\narray_merge_recursive result:\n%s", print_r(array_merge_recursive($arrfirst, $arrsecond), true));

執行結果:

//會指定預設的數字鍵223

];$arrsecond = [

111 => "second",

333 => "second",

"second"

//會指定預設的數字鍵334

];//對於重複的數字鍵,+操作後,前面陣列的鍵值會覆蓋後面的,保留之前數字鍵

echo sprintf("\narray + result:\n%s", print_r($arrfirst + $arrsecond, true));

//對於重複的數字鍵,array_merge後,重排數字鍵,不會覆蓋

echo sprintf("\narray_merge result:\n%s", print_r(array_merge($arrfirst, $arrsecond), true));

//對於重複的數字鍵,array_merge_recursive後,重排數字鍵,不會覆蓋

echo sprintf("\narray_merge_recursive result:\n%s", print_r(array_merge_recursive($arrfirst, $arrsecond), true));

執行結果:

一、key

1、key只能為integer或string,可同時存在

2、包含合法整型值的字串key會被轉化為整型儲存,如:』6』的key會被轉化為6儲存

3、布林值key會被轉化為整型儲存,true會被轉化為1儲存,false會被轉化為0儲存

4、null會被轉化為空串儲存

5、如果多個key值被轉化後為相同的值,則只使用最後乙個,前面的被覆蓋,如:乙個陣列中依次定義了』1』、true、1的key,則最後只會儲存key為1的value,之前的值都被覆蓋

6、如果未指定key,則會被自動設定為之前用過的最大的整型key+1,最小為0

二、value

1、可以為php任意型別(字串、整形、浮點型、布林型、物件、陣列、null、資源型別)

三、其他型別轉化為陣列型別

1、integer、string、float、boolean、resource型別轉化為陣列型別時,會被自動分配key為0,value為其原值

2、object型別轉化為陣列型別時,成員變數名會作為陣列key,私有屬性的key會加上類名字首,保護屬性的key會加上』*』字首

3、null會被轉化為空陣列

四、foreach

1、兩種形式,foreach(ar

ras arr

askey => va

lue)

與for

each

( val

ue)與

fore

ach(

arr as va

lue)

,其中 val

ue),

其中value是值傳遞,使用&va

lue是

引用傳遞

2、遍歷

依賴陣列

內部指標

3、遍歷

結束後,va

lue是

引用傳遞

2、遍歷

依賴陣列

內部指標

3、遍歷

結束後,

value會被保留,為防止在多次foreach時出現問題,可以在一次foreach後unset($value)或使用不同的變數

php 資料合併,PHP三種陣列合併方式區別示例

一 寫在前面 目前工作中接觸到的php陣列合併方式主要有三種 1 操作符 2 array merge 3 array merge recursive 它們的區別主要體現在對於相同鍵名 數字鍵名 字串鍵名 的處理方式,下面本文將以兩個實際例子來體現 二 相同字串鍵 arrfirst first key...

PHP陣列合併的幾種方式

直接將兩個陣列的值合併成為乙個陣列 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 ar...

EF的三種資料載入方式

ef的關聯實體載入有三種方式 lazy loading,eager loading,explicit loading,其中lazy loading和explicit loading都是延遲載入。一 延遲載入 預設 lazy loading使用的是動態 預設情況下,如果poco類滿足以下兩個條件,ef...