PHP:一个函数实现array_unique(array_merge($a,$b))的功能。

5

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

来合并两个数组并删除任何重复项,

但是,

是否有一种单独的函数可以为我完成这个任务?

(我知道我可以自己编写一个只调用这些函数的函数,但我只是好奇。)


大家好,我只是好奇是否有一个PHP函数,这样我就不必在数组上调用另一个函数(它可能非常大)。 - Hailwood
1
如果你只是想写一个函数来避免重复写 array_unique(array_merge(...)),请记住 array_merge() 可以接受多于两个参数。这只是一个想法 :) - BoltClock
5个回答

6

没有这样的函数。一般来说,编程语言会提供给你一定的工具(函数),你可以通过组合它们来获得想要的结果。

除非这是一个非常常见的用例,否则为每个用例创建一个新的函数没有任何意义 - 而你的似乎不是一个常见的用例。


有很多数组函数,再加一个也不算什么... 把arrays看作sets,把merge看作union,这是很常见的。 - Vili
PHP是一种具有许多辅助方法的语言,这些方法并不完全必需,但仍然非常方便。比我所知道的任何其他语言都更加如此。 - OMA

5
不,array_unique(array_merge($a,$b)); 是实现此功能的方法。请参见数组函数列表

0

默认情况下是没有的。你可以用另一种方式来实现(虽然可能不是很明智)

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

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

做的事情有点类似。只是想知道你发的为什么不够好?


array(array(/* some data */), array(/* some other data */))array_merge()完全不同:array_merge()将所有数组的值合并为一个数组;而array()仅将数组本身作为值合并为一个数组。因此,array_unique无法实现OP想要实现的目标。 - pinkgothic
你的回答并不是 OP 所试图实现的内容(也不是“基本相同的事情”),因此不是他们问题的答案。使用 array() 创建多维数组可能对某些人有启发性(<-- 我是认真的),但不适用于这个问题的范围。由于这个地方有点像问答百科全书,值得指出你的回答不适合。 - pinkgothic
@pinkgothic,你为什么要在两个月后发布这个帖子呢?显然这不是原帖作者所寻找的,否则早就会被标记出来了等等...没有必要在两个月后回复并标记一些帖子,假装自己很活跃。 - Viper_Sb
3
嗯,我是该网站的活跃用户,经常阅读。如果我发现有需要评论的地方,我就会添加上去。这样其他人在查看旧问题时也能得到相关信息。(这也是stackoverflow的意义所在。) - pinkgothic
1
7年后,我在这里验证@pink。 - OnklMaps

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;
}

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"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接