陣列運算子(Array Operator)
陣列運算子有以下6種:
範例 | 名稱 | 說明 |
---|---|---|
$a + $b | 聯集(合併) | 把$a和$b兩個陣列合併 |
$a == $b | 相等 | $a和$b兩個陣列有相同的key/value時為TRUE |
$a === $b | 完全相等 | $a和$b兩個陣列有相同的key/value且型別和順序皆相同時為TRUE |
$a != $b | 不相等 | $a和$b兩個陣列沒有相同的key/value時為TRUE |
$a <> $b | 不相等 | $a和$b兩個陣列沒有相同的key/value時為TRUE |
$a !== $b | 不完全相等 | $a和$b兩個陣列沒有相同的key/value或型別或順序不相同時為TRUE |
其中要注意的是+
運算子的運算方式,+
會把右邊陣列($b)的資料和左邊陣列($a)的資料全部相加,如果$a跟$b有相同的key(索引)時,會保留$a的元素,忽略$b的元素
講這麼多,不如直接來看範例程式碼最清楚了
<?php
$a = ['a'=>'Apple','b'=>'Banana','c'=>'Cow'];
$b = ['a'=>'Apple','b'=>'Banana','c'=>'Cow'];
$c = ['a'=>'Apple','c'=>'Cow','b'=>'Banana'];
$d = ['a'=>'Zebra','d'=>'Dog','e'=>'Elephant'];
$array_1 = $a+$d;
var_dump($array_1);
/*output:
array(5) {
["a"]=> string(5) "Apple"
["b"]=> string(6) "Banana"
["c"]=> string(3) "Cow"
["d"]=> string(3) "Dog"
["e"]=> string(8) "Elephant"
}
把$a跟$d合併的結果如上
由於$a['a']跟$d['a']有出現重複的key(索引),所以會保留左邊的陣列($a),忽略右邊的陣列($b)
*/
$array_2 = ($a == $c);
var_dump($array_2);
/*output:bool(true)
只比較key/value是否一樣,不比較順序,所以是true
*/
$array_3 = ($a === $c);
var_dump($array_3);
/*output:bool(false)
比較key/value是否一樣,也比較元素順序
$a雖然內容跟$c一樣,但是順序不一樣,所以是false
*/
$array_4 = $a<>$d;
var_dump($array_4);
/*output:bool(true)
$a跟$d內容不一樣,所以是true
*/
?>
但當以數字為索引的陣列要做陣列合併時,使用+
的合併結果可能不是你想要的,可以使用array_merge()
來合併陣列array_merge()
可以傳入2個陣列當作參數,但如果2個陣列當中有相同的索引值(key),第2個參數的陣列會覆蓋掉第1個參數的陣列
<?php
$a = array("dindin", "lala");
$b = array("dindin", "banana", "fool");
print_r($a + $b); // Array ( [0] => dindin [1] => lala [2] => fool )
print_r(array_merge($a, $b)); // Array ( [0] => dindin [1] => lala [2] => dindin [3] => banana [4] => fool )
?>