[英]Why does array_unique sort the values?
這是指我之前的一個問題: array_unique vs array_flip - 這表明在處理簡單的字符串和整數時, array_flip(array_flip())
比array_unique()
快得多。
我想知道的是為什么array_unique()
創建數組的副本,對其進行排序然后刪除重復項
這兩種功能的來源都可以在這里找到 。
提前致謝!
如果你在算法上考慮它,刪除重復項的方法是通過一個列表,跟蹤你找到的項目,並擺脫已經在“找到這個”列表中的東西。 一種簡單的方法是對列表進行排序。 這樣很明顯在哪里有效地刪除重復項。 想想你,更別說電腦了; 哪些列表更容易從中刪除重復?
apple
banana
cantaloupe
apple
durian
apple
banana
cantaloupe
要么
apple
apple
apple
banana
banana
cantaloupe
cantaloupe
durian
編輯:稍微調查一下(並找到這篇文章 ),看起來兩個人都完成了工作,但它們在功能上並不相同,或者至少它們並非總是如此。 用以下幾點來解釋:
我認為Dan Fego給出了一個很棒的答案,為什么人們會在刪除重復數據之前對數組進行排序; 但是,我想檢查一下array_flip()
作用。 我將使用以下數組來說明:
'a' => 'apple'
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
array_flip()
用於解釋生成的鍵和值
'apple' => 'a'
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
但是,密鑰必須是唯一的。 該手冊描述了array_flip()
如何處理:
如果值有多次出現,則最新的鍵將用作其值,而所有其他鍵將丟失。
所以我們得到這樣的東西:
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
因此,如果我們使用array_flip(array_flip())
我們得到:
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
至於array_unique()
背后的動機,我們只能推測,除非Rasmus Lerdorf或正在進行PHP開發的人關心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.