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

立松 聖久 tatemax @ kagoya.net
2005年 6月 14日 (火) 16:38:35 JST


立松です。

横山様、桝形様ありがとうございます。
桝形様に頂いた返信メールのスレッドが切れているようです
のでコチラのメールに返信します。

横山様にご呈示頂いた関数で希望通りのソーティングが出来ました。
概念は桝形様に提示頂いてますのでコチラと併せて比較関数の概念を
学びたいと思います。

誠にありがとうございました。

PHP・MySQLをさわり初めて3ヶ月ぐらいです。
これからもどうぞよろしくお願い致します。

> 横山と申します。
> 
> 立松様、初めまして。
> ユーザー関数を使用したソートについての返信です。
> 
> 要素の頭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 mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 




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