1

PHP のドキュメントによると、array_uniqueは重複する値を削除し、最初に文字列として扱われる値を並べ替えます。

次のスニペットを念頭に置いてください。

// define a simple array of strings, unordered
$brands = [ "BMW", "Audi", "BMW", "Chrysler", "Daewoo"];

// distinct the values, and sort them
echo array_unique($brands, SORT_STRING);

出力は次のようになると思います。

expected: {"0":"Audi","1":"BMW","3":"Chrysler","4":"Daewoo"}
actual  : {"0":"BMW","1":"Audi","3":"Chrysler","4":"Daewoo"}

問題は、なぜ array_unique がこれらの値をソートしないのかということです。sort_flags パラメーターを 4 つの選択肢のいずれかに変更するか、空のままにしても効果はありません。

「なぜ配列が一意に値をソートするのか」などの他のSOの質問によると、おそらくここで明らかな何かが欠けています。また、この質問array_values(array_unique($brands))の回答として述べられているように、を使用してもうまくいかないようです。

更新:有用なコメントと回答で述べたように、sort_flagsパラメータは実際には内部比較動作、または等価演算子であり、一種の話です。

4

2 に答える 2