array_unique与其他去重方法的对比

   2024-09-30 8540
核心提示:array_unique 是 PHP 中用于数组去重的一个内置函数。它可以移除数组中重复的值,并返回一个新的、不包含重复值的数组。这里将 a

array_unique 是 PHP 中用于数组去重的一个内置函数。它可以移除数组中重复的值,并返回一个新的、不包含重复值的数组。这里将 array_unique 与其他常见的数组去重方法进行对比:

使用 array_flip + array_keys
$unique_array = array_keys(array_flip($input_array));

这种方法通过先将数组的值作为键,然后再将键作为值来实现去重。但这种方法会导致原始数组中的顺序发生变化。

使用 foreach 循环:
$unique_array = [];foreach ($input_array as $value) {    if (!in_array($value, $unique_array)) {        $unique_array[] = $value;    }}

这种方法使用 foreach 循环遍历数组,并检查每个值是否已经存在于新的 $unique_array 中。如果不存在,则将其添加到 $unique_array 中。这种方法保持了原始数组的顺序。

使用 array_reduce
$unique_array = array_reduce($input_array, function ($carry, $item) {    if (!in_array($item, $carry)) {        $carry[] = $item;    }    return $carry;}, []);

这种方法使用 array_reduce 函数遍历数组,并检查每个值是否已经存在于累加器($carry)中。如果不存在,则将其添加到累加器中。这种方法保持了原始数组的顺序。

使用 array_filter
$unique_array = array_filter(array_count_values($input_array), function ($count) {    return $count == 1;});

这种方法首先使用 array_count_values 函数计算数组中每个值出现的次数,然后使用 array_filter 函数过滤出只出现一次的值。这种方法保持了原始数组的顺序。

总结:

array_unique 是最简单和最直接的方法,但它不保留原始数组的顺序。使用 array_flip + array_keys 可以保留原始数组的顺序,但需要注意键名的类型(例如,字符串键名可能导致意外的结果)。使用 foreach 循环或 array_reduce 可以保留原始数组的顺序,并且更加灵活,可以根据需要定制去重逻辑。使用 array_filter 可以保留原始数组的顺序,但计算量较大,因为需要统计每个值出现的次数。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号