Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
sort() / rsort() / asort() / arsort()対応: PHP 4(2000)
配列の要素を値やキーで昇順・降順に並べ替える関数です。すべて元の配列を直接変更します。
構文
// 値で昇順に並べ替えます。キーは振り直されます。 sort(配列, ソートフラグ); // 値で降順に並べ替えます。キーは振り直されます。 rsort(配列, ソートフラグ); // 値で昇順に並べ替えます。キーと値の対応が維持されます。 asort(配列, ソートフラグ); // 値で降順に並べ替えます。キーと値の対応が維持されます。 arsort(配列, ソートフラグ); // キーで昇順に並べ替えます。 ksort(配列, ソートフラグ); // キーで降順に並べ替えます。 krsort(配列, ソートフラグ);
関数一覧
| 関数 | 概要 |
|---|---|
| sort($array, $flags) | 配列を値で昇順に並べ替えます。数値キーは0から振り直されます。 |
| rsort($array, $flags) | 配列を値で降順に並べ替えます。数値キーは0から振り直されます。 |
| asort($array, $flags) | 配列を値で昇順に並べ替えます。キーと値の対応関係は維持されます。 |
| arsort($array, $flags) | 配列を値で降順に並べ替えます。キーと値の対応関係は維持されます。 |
| ksort($array, $flags) | 配列をキーで昇順に並べ替えます。 |
| krsort($array, $flags) | 配列をキーで降順に並べ替えます。 |
サンプルコード
<?php // 値で昇順に並べ替えます。 $numbers = [3, 1, 4, 1, 5, 9, 2, 6]; sort($numbers); print_r($numbers); // 『1, 1, 2, 3, 4, 5, 6, 9』の昇順になります。 // 値で降順に並べ替えます。 $scores = [85, 92, 78, 95, 88]; rsort($scores); print_r($scores); // 『95, 92, 88, 85, 78』の降順になります。 // 連想配列を値で昇順に並べ替えます。キーは維持されます。 $prices = ['りんご' => 150, 'みかん' => 80, 'ぶどう' => 300, 'もも' => 200]; asort($prices); print_r($prices); // 値の昇順で並び、キーとの対応も維持されます。 // 連想配列を値で降順に並べ替えます。 arsort($prices); print_r($prices); // 値の降順で並び、キーとの対応も維持されます。 // キーで昇順に並べ替えます。 $settings = ['z_index' => 100, 'color' => '赤', 'margin' => 10, 'border' => '1px']; ksort($settings); print_r($settings); // キーのアルファベット順に並びます。 // 自然順ソートで数値を含む文字列を並べ替えます。 $files = ['file10.txt', 'file2.txt', 'file1.txt', 'file20.txt']; sort($files, SORT_NATURAL); print_r($files); // 自然な数値順で並びます。
概要
PHPのソート関数はすべて元の配列を直接変更する破壊的な関数で、成功時に『true』を返します。『sort()』と『rsort()』は数値キーを0から振り直すため、連想配列に対して使用するとキーが失われます。連想配列の並べ替えには『asort()』『arsort()』『ksort()』『krsort()』を使用してください。
第2引数のソートフラグで比較方法を指定できます。主なフラグは『SORT_REGULAR』、『SORT_NUMERIC』、『SORT_STRING』、『SORT_NATURAL』です。『SORT_NATURAL』は数値を含む文字列を人間が期待する順序で並べ替えます。
独自の比較ロジックで並べ替えたい場合は『usort() / uasort() / uksort()』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。