陣列合並是什麼?array_merge
/array_replace
/陣列運算子
/array_splice
這次就是說上面的區別的。
1. array_merge
1)該函式,官方解釋:將一個或多個陣列的單元合併起來,一個陣列中的值附加在前一個陣列的後面。
2)如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果陣列包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。(說明不會保留數字索引)
3)如果只給了一個陣列並且該陣列是數字索引的,則鍵名會以連續方式重新索引。(不保留數字索引的結果)
例子:
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
4)該函式是非遞迴的,如果需要遞迴?array_merge_recursive()
可以做到
2. array_replace
這個函式優點類似,區別在於,他會把數字索引也會進行替換,其他的就與array_merge
一樣。
1)也提供了一個遞迴的函式array_replace_recursive()
3. 陣列操作符
是不是有點懵圈?沒聽說過?但是你可能用過
例子 | 名稱 | 結果 |
---|---|---|
$a + $b | 聯合 | $a 和 $b 的聯合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的鍵/值對則為 TRUE。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的鍵/值對並且順序和型別都相同則為 TRUE。 |
$a != $b | 不等 | 如果 $a 不等於 $b 則為 TRUE。 |
$a <> $b | 不等 | 如果 $a 不等於 $b 則為 TRUE。 |
$a !== $b | 不全等 | 如果 $a 不全等於 $b 則為 TRUE。 |
其中第一行,"聯合"。這與上面兩個函式的區別是?
區別是相對的,相對於array_replace
來說,+操作符會保留第一個陣列的元素,並不會發生替換,是一種補充的關係。而上面更像Mysql
中的replace into
或者on duplicate update
不過癮?
好,在贈送兩個。array_combine
和extract
array_combine(array $keys, array $values)
; 兩個陣列作為引數,並且合併。合併規則是,第一個陣列的值作為合併之後的陣列的鍵名,第二個陣列的元素的值作為合併之後陣列的元素的值。
extract
:”拉出“,將陣列匯入到當前符號表。符號表又是什麼鬼?符號表是儲存變數名和變數地址之間的對應關係的地方。就是將陣列元素,變為獨立的變數;其鍵名是變數名,元素值為變數值。
4、array_splice
array_splice
只能擷取陣列部分元素,而這個函式可以實現:批量替換,批量刪除和批量插入
官方例子
<?php
// 刪除
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")
// 刪除
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input is now array("red", "yellow")
// 替換
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input is now array("red", "orange")
// 替換
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input is now array("red", "green",
// "blue", "black", "maroon")
// 插入
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green",
// "blue", "purple", "yellow");
5、 作用
說了那麼多,根本不知道這些陣列合並有什麼厲害的地方。array_replace
可以用於陣列的更新和插入,上面說過,這就像是replace into
一樣,你可以當陣列是一個小型資料庫。
例子:(名為add
,其實可以替換)
public function add(array $parameters = array())
{
$this->parameters = array_replace($this->parameters, $parameters);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結