php ::一个函数做array_unique(array_merge($ a,$ b));

时间:2010-11-04 21:47:03

标签: php arrays

我知道我可以使用array_unique(array_merge($a,$b));

合并两个数组,然后删除所有重复项

但是,

是否有个人功能会为我做这个?

(我知道我可以自己写一个只调用这些,但我只是想知道)。

5 个答案:

答案 0 :(得分:6)

没有这样的功能。编程语言通常会为您提供一组特定的工具(函数),然后您可以将它们组合起来以获得所需的结果。

为每个用例创建一个新函数毫无意义,除非它是一个非常常见的用例 - 而你的用例似乎不是一个。

答案 1 :(得分:5)

不,array_unique(array_merge($a,$b));就是这样做的。

请参阅list of array functions

答案 2 :(得分:0)

默认情况下没有。你可以用另一种方式做到(虽然可能不那么聪明)

$array1 = array('abc', 'def');
$array2 = array('zxd', 'asdf');

$newarray = array_unique(array($array1, $array2));

做同样的事情。只是想知道为什么你发布的不够好?

答案 3 :(得分:0)

//usage $arr1=array(0=>"value0", 1=>"value1", 2=>"value2"); $arr2=array(0=>"value3", 1=>"value4", 2=>"value0") => $result=mergeArrays($arr1,$arr2); $result=Array ( [0] => value0 [1] => value1 [2] => value2 [3] => value3 [4] => value4 )

function mergeArrays () {
    $result=array();
    $params=func_get_args();
    if ($params) foreach ($params as $param) {
        foreach ($param as $v) $result[]=$v;
    }
    $result=array_unique($result);
    return $result;
}

答案 4 :(得分:0)

在php 5.6+中,您还可以使用新参数解压缩来避免多次array_merge调用(这会显着加快您的代码速度):https://3v4l.org/arFvf

<?php

$array = [
    [1 => 'french', 2 => 'dutch'],
    [1 => 'french', 3 => 'english'],
    [1 => 'dutch'],
    [4 => 'swedish'],
];

var_dump(array_unique(array_merge(...$array)));

输出:

array(4) {
  [0]=>
  string(6) "french"
  [1]=>
  string(5) "dutch"
  [3]=>
  string(7) "english"
  [5]=>
  string(7) "swedish"
}