“+”運算符
當兩個數組的鍵名是 數字鍵名 或者 字符串鍵名 可以直接 +,$c = $a + $b,在$a後追加($b在$a中不存在的鍵名)鍵名和值。
/* “+”運算符、 */
$jiaArr = array(
'1'=>'xiaoli',
'2'=>'xiaohua',
'3'=>'xiaoming',
't'=>'teacher',
);
$jiaBrr = array(
'4'=>'xiaolis',
'5'=>'xiaohuas',
'6'=>'xiaomings',
't'=>'teachers',
);
$jiaAll = $jiaArr + $jiaBrr;
var_dump($jiaAll);
/*瀏覽器output:
array(7) {
[1]=>
string(6) "xiaoli"
[2]=>
string(7) "xiaohua"
[3]=>
string(8) "xiaoming"
["t"]=>
string(7) "teacher"
[4]=>
string(7) "xiaolis"
[5]=>
string(8) "xiaohuas"
[6]=>
string(9) "xiaomings"
}
*/
t 這個鍵值在前面出現了,所以不追加到 $jiaArr 中;
array_merge
將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作爲結果的數組。 如果輸入的數組中有相同的字符串鍵名,則該鍵名後面的值將覆蓋前一個值。注意:如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。 如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引
/* array_merge、 */
$jiaArr = array(
'name1'=>'xiaoli',
'name2'=>'xiaohua',
'name3'=>'xiaoming',
'1'=>'teacher',
);
$jiaBrr = array(
'name1'=>'xiaolis',
'name5'=>'xiaohuas',
'name6'=>'xiaomings',
'1'=>'teachers',
);
$jiaAll = array_merge($jiaArr,$jiaBrr);
var_dump($jiaAll);
/*瀏覽器output:
array(7) {
["name1"]=>
string(7) "xiaolis"
["name2"]=>
string(7) "xiaohua"
["name3"]=>
string(8) "xiaoming"
[0]=>
string(7) "teacher"
["name5"]=>
string(8) "xiaohuas"
["name6"]=>
string(9) "xiaomings"
[1]=>
string(8) "teachers"
}
*/
相同普通鍵值會後面覆蓋如;name1這個鍵值,把xiaoli覆蓋爲xiaolis; 數字鍵值會被重新索引加到數組內,如兩個數組中的 1 的鍵值重新排索引爲 0 ,1;
array_merge_recursive
將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作爲結果的數組。
其實這個就是array_merge的升級版,在array_merge的基礎上加入下面功能: 如果相同鍵值,爲數字時和array_merge一樣,重新索引;如果爲字符串的時候後面不再覆蓋前面,而是而是附加到後面,方式爲遞歸追加;如:
/* array_merge_recursive */
$jiaArr = array(
'name1'=>'xiaoli',
'name2'=>'xiaohua',
'name3'=>'xiaoming',
'1'=>'teacher',
);
$jiaBrr = array(
'name1'=>'xiaolis',
'name5'=>'xiaohuas',
'name6'=>'xiaomings',
'1'=>'teachers',
);
$jiaAll = array_merge_recursive($jiaArr,$jiaBrr);
var_dump($jiaAll);
/*瀏覽器output:
array(7) {
["name1"]=>
array(2) {
[0]=>
string(6) "xiaoli"
[1]=>
string(7) "xiaolis"
}
["name2"]=>
string(7) "xiaohua"
["name3"]=>
string(8) "xiaoming"
[0]=>
string(7) "teacher"
["name5"]=>
string(8) "xiaohuas"
["name6"]=>
string(9) "xiaomings"
[1]=>
string(8) "teachers"
}
*/
name1 兩個數組都有,沒有覆蓋而是遞歸方式追加,1 數組鍵值仍被重新排序;
註釋:定義部分來自網上