You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何完全删除数组重复值,仅保留非重复元素?

在PHP中保留数组中仅出现一次的元素

你提到的需求——只保留数组里唯一出现的元素(而不是像array_unique()那样保留重复元素的第一个实例),PHP核心库确实没有单独的函数直接完成,但我们可以结合几个内置函数轻松实现,而且还能保留原元素的索引。

具体实现代码

$originalArray = [1, 63, 1];
// 先统计每个值在数组中出现的次数
$valueOccurrences = array_count_values($originalArray);
// 过滤出仅出现一次的元素,同时保留原索引
$uniqueOnlyArray = array_filter($originalArray, function($val) use ($valueOccurrences) {
    return $valueOccurrences[$val] === 1;
});

print_r($uniqueOnlyArray);

运行这段代码后,输出结果就是:

Array
(
    [1] => 63
)

代码解释

  • array_count_values():这个函数会遍历原数组,返回一个新数组,其中键是原数组的值,值是该元素在原数组中出现的次数。对你的例子来说,它会返回 [1 => 2, 63 => 1]。
  • array_filter():这个函数会根据回调函数的返回值,保留原数组中符合条件的元素。这里我们判断当前元素的出现次数是否为1,只有满足条件的元素(也就是63)会被保留,而且原数组的索引不会被重置。

注意点

别混淆这个需求和array_unique()的功能:array_unique()的作用是移除重复元素,但会保留每个重复元素的第一个实例,对你的例子来说,它会返回 [0 => 1, 1 => 63],这显然不符合你想要只保留唯一元素的需求。

内容的提问来源于stack exchange,提问作者Mohammad Faizan Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:08:38