使用array_unique删除重复项会产生错误的结果

时间:2012-05-19 10:44:53

标签: php arrays

我有两个数组,我想用单个数组

制作独特的数组

例如我有$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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

操作

$ab = $a + $b

给你一个你没想到的结果。之前在PHP: Adding arrays together

解释了此行为的原因
$ab  is Array ( [0] => 3 [1] => 2 [2] => 3 )
  

+运算符从右侧追加剩余键的元素   将数组交给左手,而重复的键不是   覆盖。

array_merge提供了更直观的行为。

答案 2 :(得分: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));

答案 3 :(得分:0)

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

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

$ab = $a + $b