これは以前の質問の1つです。array_unique vs array_flip - 単純な文字列と整数を扱う場合、array_flip(array_flip())
はarray_unique()
よりはるかに高速です。 array_unique()
が、それはその後、両方の機能のための重複にarray_uniqueが値をソートするのはなぜですか?
ソースを削除ソートhere利用可能である、配列のコピーを作成し、なぜ私が知りたいのですがどのような
です。
ありがとうございます!
これは以前の質問の1つです。array_unique vs array_flip - 単純な文字列と整数を扱う場合、array_flip(array_flip())
はarray_unique()
よりはるかに高速です。 array_unique()
が、それはその後、両方の機能のための重複にarray_uniqueが値をソートするのはなぜですか?
ソースを削除ソートhere利用可能である、配列のコピーを作成し、なぜ私が知りたいのですがどのような
です。
ありがとうございます!
アルゴリズム的に考えると、重複を削除する方法は、リストを通過し、見つけたアイテムを追跡し、すでに見つかっているものを取り除くことです。これを達成する簡単な方法の1つは、リストをソートすることです。そうすれば、重複を効率的に取り除くことができます。コンピュータはもちろんのこと、あなたについて考えてみましょう。これらのリストのどれから重複を簡単に削除できますか?
apple
banana
cantaloupe
apple
durian
apple
banana
cantaloupe
または
apple
apple
apple
banana
banana
cantaloupe
cantaloupe
durian
編集:それにビットを見て(とthis articleを発見)した後、それは2の両方が仕事を成し遂げる一方で、彼らは、機能的に同等ではないように見えますか少なくとも彼らは常にそうではありません。これらの点のカップル言い換えするには:)(
私はDan Fegoが重複を取り除く前に配列を並べ替えるのは素晴らしいと答えました。しかし、私は’ dはarray_flip()
が何を調べるのが好きです。私が説明するために、以下の配列を使用することでしょう’:
'a' => 'apple'
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
array_flip()
しかし
'apple' => 'a'
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
を生成するキーと値をexhanges、キーは一意である必要があります。 manualはarray_flip()
がこれを処理する方法を説明します。値がいくつか発生している場合
、最新のキーは、その 値として使用され、その他はすべて失われます。我々は
array_flip(array_flip())
を使用する場合、我々が得るので'banana' => 'b' 'apple' => 'c' 'date' => 'd'
:
array_unique()
の背後にある動機については'b' => 'banana' 'c' => 'apple' 'd' => 'date'
、我々は唯一のラスマス・ラードフない限り推測することができます
は、だから我々はこのような何かを得ますあるいは現在PHP開発に取り組んでいる誰かが気にしています。
ドキュメントを見ると、並べ替えのオプションパラメータがあり、並べ替えを使って内部的に比較を行うことはほとんどありません。 – Tim
array_flip(array_flip())を使用すると、並べ替えの必要なく一意の値が得られます。確かに良い方法が必要でしょうか? – Lizard
鍵は重複を持つことができないので、値は "潰れ"なければならないので、意味があります。それについて考えると、配列への代入が一定の時間であれば、O(n)に演算を残します。あなたの質問に答えるために、組み込み関数がなぜ私の頭の上からそれをしないのかわかりません。 –