PHP合并数组几种方式总结

我们在合并php数组的时候经常用的是array_merge()这个函数,其实还有+号,和array_merge_recursive函数。下面为大家做介绍,先看下面一段代码: $array1 = array(2,4,"color" = "red");$array2 = array("a", "b", "color" = "green", "shape" = "trapezoid", 4);$result = array_merge($array1,

我们在合并php数组的时候经常用的是array_merge()这个函数,其实还有‘+'号,和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_recursive和array_merge的处理方法一样。

但是这只是把数组进行合并,我做合并的同时还想要去重应该怎么办呢,那就用到了另外两个函数array_flip()函数和array_keys() 函数
要讲到数组合并与去重,这里就不得不提array_flip()函数,而这个函数也是数组键值的翻转函数。
下面列举一个例子:
$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 )
//topstduy.com.cn 整理
对多个数组合并去重技巧
$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));
 

本文标题为:PHP合并数组几种方式总结