我知道可以使用array_unique(array_merge($a,$b));
来合并两个数组并删除任何重复项,
但是,
是否有一种单独的函数可以为我完成这个任务?
(我知道我可以自己编写一个只调用这些函数的函数,但我只是好奇。)
没有这样的函数。一般来说,编程语言会提供给你一定的工具(函数),你可以通过组合它们来获得想要的结果。
除非这是一个非常常见的用例,否则为每个用例创建一个新的函数没有任何意义 - 而你的似乎不是一个常见的用例。
arrays
看作sets
,把merge
看作union
,这是很常见的。 - Vili默认情况下是没有的。你可以用另一种方式来实现(虽然可能不是很明智)
$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想要实现的目标。 - pinkgothicarray()
创建多维数组可能对某些人有启发性(<-- 我是认真的),但不适用于这个问题的范围。由于这个地方有点像问答百科全书,值得指出你的回答不适合。 - pinkgothic//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;
}
<?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"
}
array_unique(array_merge(...))
,请记住array_merge()
可以接受多于两个参数。这只是一个想法 :) - BoltClock