目前工作中接觸到的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));
執行結果:
一、key1、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...