我們在開發中,有時候會將兩個陣列合并連接起來,這個時候要注意了,千萬不要偷懶直接使用+號哦,為什么呢?我們看看以下代碼:
$a = [1, 2];
$b = [4, 5, 6];
$c = $a + $b;
print_r($c);
請用第一直接告訴我它的結果是什么?或許我這么問你應該能猜到,它的結果是:
Array
(
[0] => 1
[1] => 2
[2] => 6
)
看出來了吧,用+號運算子連接的陣列,結果取的是并集,也就是根據鍵,相同鍵的不會覆寫,沒有鍵加入進來形成一個新陣列,并不是將兩個陣列真的加起來,
如果我們用$b+$a呢?那么結果就是$b的內容,
$c = $b + $a;
print_r($c);
Array
(
[0] => 4
[1] => 5
[2] => 6
)
那么我們要獲得1,2,4,5,6這樣一個陣列要怎么辦呢?沒錯,使用array_merge()函式,請注意陣列Key的位置:
$c = array_merge($a, $b);
print_r($c);
Array
(
[0] => 1
[1] => 2
[2] => 4
[3] => 5
[4] => 6
)
$c = array_merge($b, $a);
print_r($c);
Array
(
[0] => 4
[1] => 5
[2] => 6
[3] => 1
[4] => 2
)
如果是key/value形式的Hash陣列呢?結果也是一樣的,$a中沒有鍵將合并過來,相同的鍵將不處理,
$a = ['a' => 1, 'b' => 2];
$b = ['a' => 4, 'b' => 5, 'c' => 6];
print_r($a+$b);
Array
(
[a] => 1
[b] => 2
[c] => 6
)
$c = array_merge($a, $b);
print_r($c);
$c = array_merge($b, $a);
print_r($c);
Array
(
[a] => 1
[b] => 2
[c] => 6
)
Array
(
[a] => 4
[b] => 5
[c] => 6
)
Array
(
[a] => 1
[b] => 2
[c] => 6
)
上述Hash陣列,使用array_merge()函式的結果和使用+號的結果是一樣的,這是因為他們還是進行了鍵的對比,所以合并后的陣列不會增加內容,如果是未定義下標的則會直接以數字下標添加進去,
最后,我們再試試.運算子的連接:
$c = $a . $b;
print_r($c);
ArrayArray
好吧,強轉成string型別的字串再拼接起來了,并無特別的意義,
測驗代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E4%B8%AD%E7%94%A8%2B%E5%8F%B7%E8%BF%9E%E6%8E%A5%E6%95%B0%E7%BB%84%E7%9A%84%E7%BB%93%E6%9E%9C%E6%98%AF%EF%BC%9F.php
參考檔案:https://www.php.net/manual/zh/language.operators.array.php
關注公眾號:【硬核專案經理】獲取最新文章
添加微信/QQ好友:【xiaoyuezigonggong/149844827】免費得PHP、專案管理學習資料
知乎、公眾號、抖音、頭條搜索【硬核專案經理】
B站ID:482780532
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251389.html
標籤:PHP
