如何从数组中删除相同的值

时间:2018-12-17 08:52:06

标签: php arrays

我有这个数组。我想复制所有记录形成一个数组。我尝试过array_unique,但它删除了重复项,但没有删除原始值。

Array   (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 1
        [4] => 6
        [5] => 1
        [6] => 23
        [7] => 2
)

我想删除所有重复的值,例如1和2,我想要此输出:

Array
(
        [0] => 3
        [1] => 6
        [2] => 23

)

2 个答案:

答案 0 :(得分:5)

您可以结合使用array_filterarray_count_values

$values = [1,2,3,1,6,1,23,2];
$result = array_filter(array_count_values($values), function($x) {
    return $x === 1;
});

print_r(array_keys($result));

结果:

Array
(
    [0] => 3
    [1] => 6
    [2] => 23
)

答案 1 :(得分:1)

您还可以将array_intersect与array_count_values一起使用。
Array_intersect返回值为1,而array_keys返回键(值)。

$values = [1,2,3,1,6,1,23,2];

$result = array_keys(array_intersect(array_count_values($values), [1]));

var_dump($result); //[3,6,23]

https://3v4l.org/cHU5E


另一个选择是使用array_unique和使用array_diff_assoc()获取已删除内容的列表。
在array_diff中使用该数组列表会导致值不重复。

$values = [1,2,3,1,6,1,23,2];
$diff = array_diff_assoc($values, array_unique($values));
$result = array_diff($values, $diff);
var_dump($result); //[3,6,23]

https://3v4l.org/XM5sk