natsort
(PHP 4, PHP 5, PHP 7)
natsort — "自然順"アルゴリズムで配列をソートする
説明
natsort
( array &$array
) : bool
この関数は、人間が行うような手法でアルファベットまたは数字の文字列の順番を キー/値の関係を保持したままソートします。 これは、"自然順(natural ordering)"と呼ばれているものです。 このアルゴリズムと (sort() を用いた) 通常のコンピュータ文字列ソートアルゴリズムの違いを示す例を以下に示します。
注意:
比較結果が等しくなる二つの要素があった場合、ソートした配列におけるそれらの並び順は不定となります。
パラメータ
array
- 入力の配列。
返り値
成功した場合に true
を、失敗した場合に false
を返します。
例
例1 natsort() の基本的な使用例
<?php$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");asort($array1);echo "Standard sorting\n";print_r($array1);natsort($array2);echo "\nNatural order sorting\n";print_r($array2);?>
上の例の出力は以下となります。
Standard sorting Array ( [3] => img1.png [1] => img10.png [0] => img12.png [2] => img2.png ) Natural order sorting Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
より詳細な情報については、Martin Poolの» Natural Order String Comparison ページを参照ください。
例2 natsort() をより知るための例
<?phpecho "負の数\n";$negative = array('-5','3','-2','0','-1000','9','1');print_r($negative);natsort($negative);print_r($negative);echo "ゼロ埋め\n";$zeros = array('09', '8', '10', '009', '011', '0'); print_r($zeros);natsort($zeros);print_r($zeros);?>
上の例の出力は以下となります。
負の数 Array ( [0] => -5 [1] => 3 [2] => -2 [3] => 0 [4] => -1000 [5] => 9 [6] => 1 ) Array ( [2] => -2 [0] => -5 [4] => -1000 [3] => 0 [6] => 1 [1] => 3 [5] => 9 ) ゼロ埋め Array ( [0] => 09 [1] => 8 [2] => 10 [3] => 009 [4] => 011 [5] => 0 ) Array ( [5] => 0 [1] => 8 [3] => 009 [0] => 09 [2] => 10 [4] => 011 )
参考
- natcasesort() - 大文字小文字を区別しない"自然順"アルゴリズムを用いて配列をソートする
- 配列ソート関数の比較
- strnatcmp() - "自然順"アルゴリズムにより文字列比較を行う
- strnatcasecmp() - "自然順"アルゴリズムにより大文字小文字を区別しない文字列比較を行う