,以使用自定义的逻辑来实现重复数据删除。 例如,如果您需要根据一个关联数组数组中的特定键进行重复解说,则简单的array_unique()
>是不够的。 匿名功能提供了处理此类情况的灵活性。 以下是:array_filter()
array_unique()
<code class="php">$array = [ ['id' => 1, 'name' => 'apple'], ['id' => 2, 'name' => 'banana'], ['id' => 1, 'name' => 'apple'], ['id' => 3, 'name' => 'orange'] ]; $uniqueArray = array_unique($array, SORT_REGULAR); //This won't work as expected $uniqueArray = array_reduce($array, function ($carry, $item) { $key = $item['id']; //Deduplication based on 'id' if (!isset($carry[$key])) { $carry[$key] = $item; } return $carry; }, []); $uniqueArray = array_values($uniqueArray); //Convert back to indexed array print_r($uniqueArray);</code>使用匿名函数通过数组进行迭代。匿名函数检查是否已经存在具有相同“ ID”的元素(
数组中)(累积唯一元素)。如果没有,它添加了元素。 Finally, array_reduce
converts the resulting associative array back to a numerically indexed array.$carry
array_values
Can I use anonymous functions for efficient PHP array deduplication?
array_unique()
效率也取决于所选的数组函数。
>用于对象或对标量值的简单数组)可以提供更好的性能。array_reduce
>SplObjectStorage
>与其他方法相比,使用匿名功能与其他方法相比,使用匿名函数的性能含义是什么?多方面:
array_unique()
:对于基于简单的基于值的重复数据删除,array_unique()
通常是最快的选项。它针对此特定任务进行了优化。array_filter()
具有array_reduce()
或的匿名函数:array_reduce
使用哈希表(例如,关联阵列)可以比大数据集更快地进行了优化的环路(例如,关联阵列),尤其是在涉及复杂的deDuplication Logic的情况下。 此方法避免了array_reduce
或array_filter
的函数开销。 如果阵列已经排序,则某些算法可以利用这一点来提高效率。灵活性array_unique()
。 它们允许您定义自定义重复数据删除逻辑,该逻辑不受
基于协会阵列中的特定键:array_unique()
:
array_unique()
在重复数据删除之前进行自定义数据转换:
以上是PHP数组去重可以用匿名函数实现吗的详细内容。更多信息请关注PHP中文网其他相关文章!