php数组合并的区别

$result=array(
   'a'=>'1',
   'flag'=>'1');
$res1['flag']='1';
$res1[] = $result;

$result=array(
   'a'=>'1',
   'flag'=>'2');

$res2['flag']='2';
$res2[] = $result;

$res=array($res1,$res2);
var_dump($res);
echo '<br>';
echo '<br>';
echo '<br>';

var_dump(array_merge($res1,$res2));
echo '<br>';
echo '<br>';
echo '<br>';

var_dump($res1+$res2);


输出:

array(2) { [0]=> array(2) { ["flag"]=> string(1) "1" [0]=> array(2) { ["a"]=> string(1) "1" ["flag"]=> string(1) "1" } } [1]=> array(2) { ["flag"]=> string(1) "2" [0]=> array(2) { ["a"]=> string(1) "1" ["flag"]=> string(1) "2" } } } 


array(3) { ["flag"]=> string(1) "2" [0]=> array(2) { ["a"]=> string(1) "1" ["flag"]=> string(1) "1" } [1]=> array(2) { ["a"]=> string(1) "1" ["flag"]=> string(1) "2" } } 


array(2) { ["flag"]=> string(1) "1" [0]=> array(2) { ["a"]=> string(1) "1" ["flag"]=> string(1) "1" } }


1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 

2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值 


所以一般情况下,采取

$res=array($res1,$res2);

参考:
http://www.jb51.net/article/24438.htm


你可能感兴趣的:(PHP,数则合并)