我有这个数组。我想复制所有记录形成一个数组。我尝试过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
)
答案 0 :(得分:5)
您可以结合使用array_filter和array_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]
另一个选择是使用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]