php怎么实现合并数组且key不变
方法:1、使用“+”运算符,语法“数组1 + 数组2”;2、使用array_merge_recursive()函数,当两个或更多个数组元素有相同的键名时,不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑
一般PHP中合并两个数组都会使用array_merge()
例如:
$data1 = ['111' => 'aaa', '222' => 'bbb', '333' => 'ccc']; $data2 = ['444' => 'ddd', '555' => 'eee', '666' => 'fff']; $data = array_merge($data1, $data2); var_dump($data);
得到结果:
array(6) { [0]=> string(3) "aaa" [1]=> string(3) "bbb" [2]=> string(3) "ccc" [3]=> string(3) "ddd" [4]=> string(3) "eee" [5]=> string(3) "fff" }
可以看到使用array_merge()会重置key值,如果key值对我们有用,不想重置,可以使用"+"合并数组。
$data1 = ['111' => 'aaa', '222' => 'bbb', '333' => 'ccc']; $data2 = ['444' => 'ddd', '555' => 'eee', '666' => 'fff']; $data = $data1 + $data2; var_dump($data);
得到结果:
array(6) { [111]=> string(3) "aaa" [222]=> string(3) "bbb" [333]=> string(3) "ccc" [444]=> string(3) "ddd" [555]=> string(3) "eee" [666]=> string(3) "fff" }
也可以使用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 数组键值仍被重新排序;
推荐学习:《PHP视频教程》