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
相关产品推荐
相关产品推荐

