[PHP-users 7912] Re: 配列のソートについて

SHIMOOKA Hideyuki php-users@php.gr.jp
Wed, 5 Jun 2002 11:00:01 +0900


下岡です。

---- Youさん曰く...

>配列のソートについて教えていただきたいので投稿させていただきます。
>現在、下記のような配列があるとします。
>
>$list = array( 
>   'りんご\t200', 
>   'みかん\t300', 
>   'バナナ\t100', 
>   'すいか\t140', 
>   );
(snip)
>for($i=0; $i<count($list); $i++){
>    list(,$TMP) = split("\t",$list[$i]);
>    $data["$TMP"] = $list[$i];
>}
>asort($data);
>
>とし、ソートしたい部分をキーとしその後、
>関数を使いソートしております。
>もっと、簡単にソースをまとめたいのですが、
>ほかに簡潔な方法はないか教えていただけないでしょうか。

こんなのでどうでしょうか?
毎回ソートのロジックを書かないで済みます。

----ここから

<?php
function compare($a, $b) {
    $sa = split("\t", $a);
    $sb = split("\t", $b);
    if ($sa[1] == $sb[1]) return 0;
    return ($sa[1] > $sb[1]) ? -1 : 1;
}
$list = array( 
    "りんご\t200",
    "みかん\t300",
    "バナナ\t100",
    "すいか\t140",
    "メロン\t1400",
    "いちご\t500"
   );

usort($list, "compare");

foreach($list as $key => $val) {
    echo "$key => $val<br>";
}
?>

----ここまで

-- 
H.Shimooka/shimooka@axissoft.co.jp