[PHP-users 25829] Re: ユーザー関数にてソート

横山 修司 s-yokoyama @ jsb-g.co.jp
2005年 6月 14日 (火) 16:28:44 JST


横山と申します。

立松様、初めまして。
ユーザー関数を使用したソートについての返信です。

要素の頭8桁は降順、9〜10桁目は昇順にソートという事なので、
わかりやすくまとめると、下記1〜3の手順で良いかと思います。

1:頭8桁で比較する
2:頭8桁が等しい場合は、9〜10桁目で比較する
3:すべて等しい場合は0を返す

下記にプログラムを掲載いたします。
function txt_sort($a, $b) {
$a_date = substr($a, 0, 8);
$b_date = substr($b, 0, 8);

$a_id = substr($a, 8, 2);
$b_id = substr($b, 8, 2);

if ($a_date < $b_date) {
return 1;
}
if ($a_date > $b_date) {
return -1;
}
if ($a_date == $b_date and $a_id > $b_id){
return 1;
}
if ($a_date == $b_date and $a_id < $b_id){
return -1;
}
return 0;
}

だと思います。


立松 聖久 wrote:

>要するに要素の頭8桁は降順、9桁目から10桁目は昇順に
>並べたいのです。
>
>function txt_sort($a, $b) {
>  $a_date = substr($a, 0, 8);
>  $b_date = substr($b, 0, 8);
>
>  $a_id = substr($a, 8, 2);
>  $b_id = substr($b, 8, 2);
>
>*この後が私のマニュアル読解力では続かないですが一応。
>  if ($a_date < $b_date and $a_id > $b_id) {
>    return 1;
>  }
>  if ($a_date > $b_date and $a_id < $b_id) {
>    return -1;
>  }
>  if ($a == $b)
>    return 0;
>}
>
>usort($text, txt_sort);
>

-- 
--------------------------------------------------
株式会社ジェイ・エス・ビー 業務部WEB戦略課
横山 修司
〒169-0075 東京都新宿区高田馬場1-33-5
           タケトモビル2F(総合管財株式会社内)
TEL : 03-3204-5055 / FAX : 03-3204-8805
E-Mail : s-yokoyama @ jsb-g.co.jp
部屋検索サイト : http://www.unilife.co.jp/
--------------------------------------------------



PHP-users メーリングリストの案内