[PHP-users 28808] Re: 難しいソートについて

kenji yamamoto @ ainichi.co.jp
2006年 3月 24日 (金) 13:18:54 JST


kenjiです。

こんな感じ?

function compare($a, $b) {
    $sa = split("<>", $a);
    $sb = split("<>", $b);
    if ($sa[1] == $sb[1]) {
     if ($sa[2] == $sb[2]) return 0;
      return ($sa[2] < $sb[2]) ? -1 : 1;
    }
    if( !$sa[1] ) return 1;
    if( !$sb[1] ) return -1;
    return ($sa[1] < $sb[1]) ? -1 : 1;
}

function log_sort($sdata){
 usort($sdata,compare);
 return $sdata;
}


----- Original Message ----- 
From: "reima" <reima @ wolfs.jp>
To: <php-users @ php.gr.jp>
Sent: Friday, March 24, 2006 12:49 PM
Subject: [PHP-users 28805]難しいソートについて


> はじめまして、ソートについてお聞きしたいことがあります。
>
> 登録番号は0から始まる数字、レベルには「上:1 中:2 下:3 普:0」の値が入っています。
> *にはそのほかソートに関係のないデータがあります。
>
> 登録番号<>レベル<>UNIXタイムスタンプ<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>*<>\n
> このようなログを レベル>レベルが「普通」でUNIXタイムが新しいほうが上(上・中・下より下)に来るようにしたいのです
>
>
> 理想なソート結果
> 0<>1<>1111111111<>文字<>省略...
> 3<>2<>1111111114<>文字<>省略...
> 5<>2<>1111111116<>文字<>省略...
> 6<>3<>1111111117<>文字<>省略...
> 1<>0<>1111111112<>文字<>省略...
> 2<>0<>1111111113<>文字<>省略...
> 4<>0<>1111111115<>文字<>省略...
>
> http://ns1.php.gr.jp/pipermail/php-users/2002-June/007909.html
> で参考にさせていただいたものを
>
> function compare($a, $b) {
>    $sa = split("<>", $a);
>    $sb = split("<>", $b);
>    if ($sa[1] == $sb[1]) return 0;
>    return ($sa[1] > $sb[1]) ? -1 : 1;
> }
>
> function log_sort($sdata){
> usort($sdata,compare);
> foreach($sdata as $key => $val){
> $new_data[]=$val;
> }
> return $new_data;
> }
>
> $log_file="./data/log.dat";
>
> $lines = file($log_file);
> $out_data = log_sort($lines);
>
> $fp = fopen($log_file,"w");
> flock($fp,2);
> fputs($fp,$out_data);
> fclose($fp);
>
> のように変えてもうまくいかず・・・
>
> 良い案はございませんでしょうか?
>
>
>
> PHP環境
> OS:Windows 2000 Pro Sp4
> Web:Apache2.0.5.4
> PHP:5.1.2
>
>


--------------------------------------------------------------------------------


> _______________________________________________
> 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 メーリングリストの案内