在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、总结一句话总结:合并:array_merge() array_merge_recursive() +号;去重:array_flip() array_unique()array_merge() array_merge_recursive() +号 array_flip() array_unique()
1、array_merge和+以及array_merge_recursive数组合并时对相同的字符串索引的操作是怎样的?+前面的覆盖后面的array_merge后面的覆盖前面的array_merge_recursive增加数组维度array_merge则会用后面的值覆盖前面出现的值;
2、array_merge和+以及array_merge_recursive数组合并时对相同的数字索引的操作是怎样的?array_merge和array_merge_recursive重建(新增)索引+前面的覆盖后面的array_merge则会给重复的值重建索引(索引值从0开始);
3、多维数组合并去重用的是哪个函数?array_flip()函数-数组键值的翻转函数array_flip()函数,而这个函数也是数组键值的翻转函数 $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合并数组几种方式总结参考: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_merge和+以及array_merge_recursive结果的”color”的值我们可以看出:
但是这只是把数组进行合并,我做合并的同时还想要去重应该怎么办呢,那就用到了另外两个函数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));
结合上边这些函数的分析和使用,相信以后日常对数组合并已经基本不成问题了。
|
2022-08-17
2022-11-06
2022-08-15
2022-08-17
2022-08-16
请发表评论