📔
PHP sortメソッドとnatsortメソッド
はじめに
sortメソッドで順番を変えた際に、想定していた挙動と異なったので、整理のために記載いたします。
sort
$a = [1, "あああ", 2];
$b = ["1", "あああ", "2"];
sort($a);
sort($b);
上記行った際の結果は、
$a
["あああ", 1, 2];
$b
["1", "2", "あああ"];
上記のようになる。
・そもそも文字列の1と数値の1の順序は違う
・順序は文字列数字 → 文字列 → 数値である
natsort
natsort($a);
natsort($b);
上記の結果は、
$a
[1, 2, "あああ"]
$b
["1", "2", "あああ"]
順番は一緒
nat_sort = SORT_NATURAL - 要素の比較を文字列として行う
ようだ
さいごに
ただ、phpのバージョンによってsortの挙動が異なるのでちゃんと確認する必要がある模様。
※上記実行環境は、Ver.'6.18.3'
補足
flags が SORT_REGULARの場合に 複数の型が混在する配列をソートする場合には、注意してください。 sort() が期待しない結果を出力することがあります。
公式HPに上記のように記載があった..
Discussion