,以使用自定義的邏輯來實現重複數據刪除。 例如,如果您需要根據一個關聯數組數組中的特定鍵進行重複解說,則簡單的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中文網其他相關文章!