1

我有两个数组,我想用单个数组制作唯一数组

例如我有$a=array(3);$b=array(1,2,3)所以我想要$c=array(1,2,3)

我做了一个像这样的代码:

            $a=array(3);
        $b=explode(',','1,2,3');
        $ab=$a+$b;
        $c=array_unique ($ab);
            print_r($c);

它给了我Array ( [0] => 3 [1] => 2 )

但是我要Array ( [0] => 1 [1] => 2 [2] => 3 )

4

4 回答 4

3
$a = array(1,2,3,4,5,6);

$b = array(6,7,8,2,3);

$c = array_merge($a, $b);

$c = array_unique($c);
于 2012-05-19T10:50:53.017 回答
1

操作

$ab = $a + $b

正在给你一个你没想到的结果。这种行为的原因之前已经在PHP:Adding arrays together中解释过

$ab  is Array ( [0] => 3 [1] => 2 [2] => 3 )

+ 运算符将剩余键的元素从右手数组附加到左手,而重复的键不会被覆盖。

array_merge 提供了更直观的行为。

于 2012-05-19T10:48:29.187 回答
0

数组合并,伙计。数组合并。无论如何,正如类似问题的答案(https://stackoverflow.com/a/2811849/223668)告诉我们:

The + operator appends elements of remaining keys from the right handed array to the left handed, whereas duplicated keys are NOT overwritten.

如果您有数字键(如在标准表中),它们肯定会在两个数组中重复,并且结果远非理想。

所以代码应该是这样的:

$c = array_unique(array_merge($a, $b));
于 2012-05-19T10:50:01.000 回答
0

您需要使用此 array_merge 来连接两个数组。

http://www.php.net/manual/en/function.array-merge.php

不是

$ab = $a + $b
于 2012-05-19T10:50:19.733 回答