• 技术文章 >后端开发 >PHP问题

    php怎么实现合并数组且key不变

    青灯夜游青灯夜游2021-07-15 14:00:31原创94

    方法: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视频教程

    以上就是php怎么实现合并数组且key不变的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 合并数组
    上一篇:php中fopen打开的文件怎么关闭 下一篇:php判断语句怎么写
    VIP会员

    相关文章推荐

    • php implode怎么将数组转字符串• php怎么删除字符串第一个空格• php怎么获取当前时间星期几• php pdo类的方法有哪些• php销毁session的方法是什么• php中fopen打开的文件怎么关闭

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网