zoukankan      html  css  js  c++  java
  • 数组合并--php

    常用的合并数组方法有以下几种:

    1  array_merge

    2  '+'

    3  array_merge_recursive

    下面是一段对比的代码

    $array1 = array(2,4,"color" => "red");
    
        $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
    
        $result = array_merge($array1, $array2);
    
        echo "----------------array_merge---------------".PHP_EOL;
    
        print_r($result);
    
        echo "----------------+++++++++++---------------".PHP_EOL;
    
        print_r($array1+$array2);
    
        echo "----------------array_merge_recursive---------------".PHP_EOL;
    
        print_r(array_merge_recursive($array1,$array2));

    结果如下所示

    ----------------array_merge---------------Array(
    
        [0] => 2
    
        [1] => 4
    
        [color] => green
    
        [2] => a
    
        [3] => b
    
        [shape] => trapezoid
    
        [4] => 4)----------------+++++++++++---------------Array(
    
        [0] => 2
    
        [1] => 4
    
        [color] => red
    
        [shape] => trapezoid
    
        [2] => 4)----------------array_merge_recursive---------------Array(
    
        [0] => 2
    
        [1] => 4
    
        [color] => Array
    
            (
    
                [0] => red
    
                [1] => green
    
            )
    
     
    
        [2] => a
    
        [3] => b
    
        [shape] => trapezoid
    
        [4] => 4)

    对比array_merge+以及array_merge_recursive结果的”color”的值我们可以看出:
    1.对于相同的字符串索引,
    array_merge则会用后面的值覆盖前面出现的值;
    +会用前面出现过的值覆盖后面相同的key;
    array_merge_recursive则会把相同的索引放到一个数组里面,增加数组的维度;
    2.对于相同的数字索引,
    array_merge则会给重复的值重建索引(索引值从0开始);
    +仍然是用前面出现过的值覆盖后面的值;
    array_merge_recursivearray_merge的处理方法一样。

     

    但是这只是把数组进行合并,我做合并的同时还想要去重应该怎么办呢,那就用到了另外两个函数array_flip()函数array_keys() 函数

     

     

    要讲到数组合并与去重,这里就不得不提array_flip()函数,而这个函数也是数组键值的翻转函数。

     

    For example:

     

    $arr=array('10','11','12');$arr2=array('12','13','14');$arr3=array('14','15','16');
    
     
    
    print_r(array_flip($arr)+array_flip($arr2)+array_flip($arr3));
    
    output:
    
    Array ( [10] => 0 [11] => 1 [12] => 2 [13] => 1 [14] => 2 [15] => 1 [16] => 2 )

    1.单数组去重复

    array_unique($arrTest)

    array_unique() 函数移除数组中的重复的值,并返回结果数组。

    当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。

    返回的数组中键名不变。

    <?php
    
    $a=array("a"=>"red","b"=>"green","c"=>"red");
    
    print_r(array_unique($a));
    
    ?>
    
    运行结果:Array ( [a] => red [b] => green )

     

     

    //2.多数组去重复

        array_keys(array_flip($arr1)+array_flip($arr2))

    array_keys() 函数返回包含数组中所有键名的一个新数组。

    如果提供了第二个参数,则只返回键值为该值的键名。

    返回包含数组中所有键名的一个新数组:

    <?php
    
    $a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
    
    print_r(array_keys($a));
    
    ?>
    
    运行结果:Array ( [a] => red [b] => green )
    
    Array ( [0] => Volvo [1] => BMW [2] => Toyota )

    对多个数组合并去重技巧

    $a = array('1001','1002');
    
    $b = array('1002','1003','1004');
    
    $c = array('1003','1004','1005');
    
    $d = array_keys(array_flip($a) + array_flip($b) + array_flip($c));

    结合上边这些函数的分析和使用,相信以后日常对数组合并已经基本不成问题了。

  • 相关阅读:
    网站安全策略
    防止表单重复提交的几种策略
    Laravel5中防止XSS跨站攻击的方法
    PHP + ORACLE 远程连接数据库环境配置
    iview table表格内容为数组或者对象的子元素时问题讨论
    jquery中 $(xxx).each() 和 $.each()的区别,以及enter键一键登录
    vue.js 强行赋值、刷新数组或者对象 方法之 $.set()
    vue 组件,以及组件的复用
    vue 和 jquery混合使用
    JS清除空格之trim()方法
  • 原文地址:https://www.cnblogs.com/wyl0514/p/10850243.html
Copyright © 2011-2022 走看看