HOME   入り口   MENU


No9.並び替えちゃえ ---- 配列(2)




PHPでは配列を並び替え(ソート)する関数がいろいろとあります。
連想配列のキーで並び替えしたり、
値で並び替えすることもできます。
じゃあ、まずは上の配列を作ってみましょう。
<?php
//配列作成
$rensyu["D"]=38;
$rensyu["A"]=22;
$rensyu["C"]=91;
$rensyu["B"]=7;
//配列内容を表示
foreach($rensyu as $key =>$value){
    echo "\$rensyu[\"$key\"}=$value<BR>\n";
}
?>

これを実行すると
$rensyu["D"}=38
$rensyu["A"}=22
$rensyu["C"}=91
$rensyu["B"}=7
という並びで配列ができていることが分かります。
じゃあ、これをキー順にするには?
<?php
//キーを文字列としてソート
ksort($rensyu,SORT_STRING);
//ソートした内容を表示
foreach($rensyu as $key =>$value){
    echo "\$rensyu[\"$key\"}=$value<BR>\n";
}
?>

$rensyu["A"}=22
$rensyu["B"}=7
$rensyu["C"}=91
$rensyu["D"}=38
$rensyuという配列がキー順に並び替えられたことが分かります。(^_^)
ksortという命令が配列をキー順に並び替えてくれるのです

ふーん、それなら値順に並び替えるにはどうするの?
って思いますよね。
それも簡単!
今度はasortという命令を使います。
<?php
//値を数値としてソート
asort($rensyu,SORT_NUMERIC);
//ソートした内容を表示
foreach($rensyu as $key =>$value){
    echo "\$rensyu[\"$key\"}=$value<BR>\n";
}
?>

$rensyu["B"}=7
$rensyu["A"}=22
$rensyu["D"}=38
$rensyu["C"}=91
ね。値で並び変わりました。

keyでソートしたいときはksort
値でソートしたいときはasort
って覚えやすくでいいですね〜

ん?
asort($rensyu,SORT_NUMERIC);
SORT_NUMERICとかSORT_STRINGてのは何?
これは並び替えを数値としてするか文字列としてするか
支持するためのオプションです。
上の「値で並び替え」は数字なので数値としてasortしていますが
これを文字列として並び替えてみると。
<?php
//値を数値としてソート
asort($rensyu,SORT_STRING);
//ソートした内容を表示
foreach($rensyu as $key =>$value){
    echo "\$rensyu[\"$key\"}=$value<BR>\n";
}
?>

$rensyu["A"}=22
$rensyu["D"}=38
$rensyu["B"}=7
$rensyu["C"}=91
値が数字としてではなく文字列として並び変わります。

(オプションの種類)
SORT_REGULAR - 通常通りに項目を比較
SORT_NUMERIC - 数値的に項目を比較
SORT_STRING - 文字列として項目を比較

サンプル: こう書くと   ==>    こうなる!

こんな風に画像の入れ換えで使うと楽しいかも?(^_^)
配列のキーや値の付け方を工夫することによって
お好みの並び替えが実現できると思います〜。



(オマケ)
連想配列でない普通の配列の場合はsort命令を使えます。
(sort命令でソートするとキー(添え字)との関係を維持することができません)
また上の例では昇順の並び替えでしたが
降順で並び替えたいときはそれぞれ
krsort,arsort,rsort
という命令になります。
配列の並び替え(ソート)についての詳細は PHP日本語マニュアル











  HOME