« PHP:多次元配列の扱い方 | メイン | PHP:x桁の数字をランダムに作成する »

2005年09月08日

PHP:多次元配列のソート(usort)

多次元配列を条件付きでソートする場合にはusortを使用するのが便利です。usort関数は、ユーザー定義関数を引数として、多次元配列をソートします。

■usortの使用方法

$FRUIT = array();
$FRUIT[0]['name'] = 'りんご';
$FRUIT[0]['num'] = 15;
$FRUIT[1]['name'] = 'みかん';
$FRUIT[1]['num'] = 30;
$FRUIT[2]['name'] = 'バナナ';
$FRUIT[2]['num'] = 2;

function cmp_desc($a, $b){

    if($a["num"] > $b["num"]){
        return -1;
    }else if($a["num"] < $b["num"]){
        return 1;
    }else{
        return 0;
    }
}

(※上記比較関数は、

if($a["num"] == $b["num"]){
    return 0;
}else{
    return ($a["num"] > $b["num"]) ? -1 : 1;

}とも書くことができます。)

usort($FRUIT, "cmp_desc");

while(list($key, $value) = each($FRUIT)){
    $name = $value['name'];
    $num = $value['num'];

    print "$key.$name({$num}個) ";
}

※上記の結果、以下のように出力されます。

0.みかん(30個) 1.りんご(15個) 2.バナナ(2個)

投稿者 wing : 2005年09月08日 12:46

コメント