我需要从数组中删除多次出现在数组中的值。
例如:
$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/