我需要从数组中删除多次出现在数组中的值。
例如:

$value = array(10,10,5,8);
我需要这个结果:
$value = array(5,8);
php中有内置函数吗?
我试过了,但这不会返回我的预期结果:
$unique = array_unique($value);
$dupes = array_diff_key($value, $unique);

最佳答案

如果愿意,可以使用数组函数并放弃foreach循环:
这里是单线:
代码:

$value = [10, 10, 5, 8];
var_export(array_keys(array_intersect(array_count_values($value),[1])));
作为多行:
var_export(
    array_keys(
        array_intersect(
            array_count_values($value),
            [1]
        )
    )
);
输出:
array (
  0 => 5,
  1 => 8,
)
这会将值计数作为数组获取,然后使用array_intersect()仅保留出现一次的值,然后将键转换为零索引数组的值。
上面的代码片段与@modsfabio和@axiac的答案完全相同。我的摘要中唯一的优点是简洁。他们的解决方案可能胜过我的解决方案,但是以相对较小的数据集判断速度可能会浪费开发时间。对于处理相对较大数据集的任何人,请进行自己的基准测试以找到最有效的技术。

关于php - 如果多次出现,如何从数组中删除值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44653841/

10-16 20:17