background image

PHP

 

     中

       array_merge

 

     和

       array

 

     相加的区别

 

 

今天处理一个这样的问题: 如何获取字符键名相同值不同的两个数组值集合 ,用
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