“
”
今天处理一个这样的问题: 如何获取字符键名相同值不同的两个数组值集合 ,用
array_merge
“
和数组相加都不可行,让我认真比较了下 PHP 中 array_merge 和 array
”
相加的区别 。
首先来看看键名是 string,两者区别:
1.
<?
php
2. $arr1
=
array
(
'a'
=>
'PHP'
);
3. $arr2
=
array
(
'a'
=>
'JAVA'
);
4.
//如果键名为字符,且键名相同,array_merge()后面数组元素值会覆盖前面
数组元素值
5. print_r
(
array_merge
(
$arr1
,
$arr2
));
//Array ( [a] => JAVA )
6.
//如果键名为字符,且键名相同,数组相加会将最先出现的值作为结果
7. print_r
(
$arr1
+
$arr2
);
//Array ( [a] => PHP )
8. ?>
如果键名是数字,两者区别:
1.
<?
php
2.
/** by http://www.phpddt.com */
3. $arr1
=
array
(
"C"
,
"PHP"
);
4. $arr2
=
array
(
"JAVA"
,
"PHP"
);
5.
//如果键名为数字,array_merge()不会进行覆盖
6. print_r
(
array_merge
(
$arr1
,
$arr2
));
//Array ( [0] => C [1] => PHP [2]
=> JAVA [3] => PHP )
7.
//如果键名为数组,数组相加会将最先出现的值作为结果,后面键名相同的会
被抛弃
8. print_r
(
$arr1
+
$arr2
);
//Array ( [0] => C [1] => PHP )
9. ?>
“
特别要注意。关于 array_merge
”
和数组相加的区别 上面已经阐述的很清楚了,回到我
“
”
最初的问题 如何最有效的获取字符键名相同值不同的两个数组值集合呢 ,不会这要对
每个数组遍历吧,PHP 中还有一个函数,获取你不常用:array_merge_recursive —
递归地合并一个或多个数组,如果输入的数组中有相同的字符串键名,则这些值会被合
并到一个数组中去。如下例:
1.
<?
php