首选说明一下这篇文章有点标题党的嫌疑,我前面写了一篇文章对比了php合并一维数组的三种方式,后来又用这三种方式都来处理了一下多维数组,奇怪的是array_merge和+都没有报错,我就以为他们也能用来处理多维数组。仔细观察了一下结果,才发现这两种方式其实是来打酱油的。
请看代码
$array1 = array(2,4,color => red); $array2 = array(a, b, color => green, shape => trapezoid, 4); $array3 = array(e,f,red=>array(little=>little,3,5),2,4); $array4 = array(a,b,red=>array(little=>big,4,6),8,9); echo ----------------array_merge---------------.php_eol; print_r(array_merge($array3,$array4)); echo ----------------+++++++++++++++++++++---------------.php_eol; print_r($array3+$array4); echo ----------------array_merge_recursive---------------.php_eol; print_r(array_merge_recursive($array3,$array4));
结果如下
----------------array_merge---------------array( [0] => e [1] => f [red] => array ( [little] => big [0] => 4 [1] => 6 ) [2] => 2 [3] => 4 [4] => a [5] => b [6] => 8 [7] => 9)----------------+++++++++++++++++++++---------------array( [0] => e [1] => f [red] => array ( [little] => little [0] => 3 [1] => 5 ) [2] => 2 [3] => 4)----------------array_merge_recursive---------------array( [0] => e [1] => f [red] => array ( [little] => array ( [0] => little [1] => big ) [0] => 3 [1] => 5 [2] => 4 [3] => 6 ) [2] => 2 [3] => 4 [4] => a [5] => b [6] => 8 [7] => 9)
看完代码,我想聪明的看官您已经发现了打酱油的含义:array_merge和+把第一维数组的值都当作一个简单变量,然后用处理一维素组的方式把传进去的素组处理了一遍。
只有array_merge_recursive使用了迭代的方式处理了每一维度的素组。
原文地址:php多位数组合并的三种方式, 感谢原作者分享。
