• 締切済み

Perlにおける(もしくはPHP)日付の比較について

Perlにおける(もしくはPHP)日付の比較について csvデータで下記のようなファイルがあります。 ブラウザに表示させる時、古い順に10件ずつ表示させたいと思いますが、初心者なりに調べたのですがどうも分かりません。 こうした場合どういう技術を使うのでしょうか 2010/06/24,りんご,青森 2010/05/10,みかん,和歌山 2010/3/10,もも,山形 お手数をおかけしますがご教授頂ければ幸いです

みんなの回答

回答No.2

2010/3/10は誤植ですか? この場合、ただの文字列なので 日付といっても同じ文字数ならば辞書順が変わるわけではないので substr($_,0,10)の比較で十分ですよ。 3/10が誤植でないとするならsplitで substrの結果を /で分割してあげれば よいだけかと思います。 この場合はsort{}の中で数値として比較することを忘れずに。

jm3atn
質問者

お礼

ありがとうございます。 2010/3/10,もも,山形→2010/03/10,もも,山形 のまちがいです。 すいません、下記の意味が把握できるレベルではないのですが 何か参考書籍かサイトとかありますでしょうか substr($_,0,10) 上記記述によって行まるごといれかわって 2010/3/10,もも,山形 2010/05/10,みかん,和歌山 2010/06/24,りんご,青森 となるという認識でよろしいでしょうか

全文を見る
すると、全ての回答が全文表示されます。
noname#119957
noname#119957
回答No.1

PHPの方が楽ですね。 CSVを配列に読み込んで、ソートして表示すればよろしいです。 ■配列のソート(PHP) http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k08.htm

jm3atn
質問者

お礼

ありがとうございます 下記のところを使用するということでしょうか csvファイルからは1行ずつ @dataに入れる予定ですがその中で記述するのでしょうか 初心者的質問ですいません。 ■連想配列ソート(昇順) ・連想配列を asort で昇順ソートできる。 $a = array('key1' => 'abc', 'key2' => 'def', 'key3' => 'ghi'); asort($a); foreach ($a as $key => $tmp) { print "<P>$key - $tmp</P>\n"; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 最大値のみレコードを抽出する方法

    下記の通りに、品名、産地、個数が書かれている in.csvから、個数が最大値であるレコードをピックアップして、 out.csvに出力したいと考えてます。 どのようにしたら、可能でしょうか。 (※in.csvのデータは、ソートされていません。) 私は、in.csvを1行ずつ構造体に代入して、 個数が一つ前のデータより、大きい場合は、 データを上書きする。小さい場合は、代入しない という方法で、out.csvが作れるのではないかと 考えてますが、他にも効率がよい方法がありましたら、 教えてください。 ========in.csv=========== 品名  産地  個数 りんご 青森  2 りんご 青森  3 もも  山梨  5 もも  山梨  6 もも  山梨  7 かき  和歌山 8 かき  和歌山 5 かき  和歌山 3 りんご 青森  4 ======================== ========out.csv========= 品名  産地  個数 りんご 青森  4 もも  山梨  7 かき  和歌山 8 ======================== 以上です。

  • csvファイルの読込みとソート

    いつも大変参考にさせていただいております。 csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。 (検索キーワード:「php csv ソート」「php 二次元配列 ソート」など) とても困っています。どなたかよろしくお願いします。 以下のようなcsvファイルを読み込みソートしたいのです。 ■csvファイル 20110803, A, りんご 20111215, B, みかん 20110306, A, みかん 20110620, A, りんご 20110215, B, りんご ■個別にやりたい処理 (1)、左列の日付で昇順ソートしてすべて表示 (2)、「A」を含む行をすべて表示(日付順) (3)、「A」+「りんご」を含む行をすべて表示(日付順) □補足 csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。 csvの行は増えていきます(max100行位)。列は固定。

    • ベストアンサー
    • PHP
  • 例えばPHPで下記のようなdata.csvがあります

    例えばPHPで下記のようなdata.csvがあります NO,種類,入荷日,出荷日 1,りんご,2010/06/10,2010/06/30 2,みかん,2010/03/10,2010/04/30 3,かき,2010/05/10,2010/05/30 ・ ・ ・ これらをPHPで読み込んできて入荷日順に10件ずつ表示するプログラムを書きたいのですが 本も三冊買ってきたり、掲示板のソースとかをみて参考にできるかと思ったりしたのですが当方初心者でしてどうも難しく行き詰っております。 data.csvから1行ずつ取り込んできて、3番目の数字でソートするといいというのは分かるのですが どうもその方法がわかりません。 何かアドバイス頂ければ幸いです。

    • ベストアンサー
    • PHP
  • エクセルでカウント集計したい

    教えてください。 エクセルの表に下記のようなデータがあります 青森 りんご 和歌山 りんご 東京 みかん 青森 りんご 青森かつリンゴの件数、和歌山かつりんごの件数をそれぞれカウントしたいのですがどのような関数を入力したらよいでしょうか? よろしくお願いいたします

  • PHP CSVから条件にあう行を3行取りだしたい

    以下のようなCSVがあったとします。(data.csv)価格で降順にソートしてあります。 line0,line1,line2 1,ぶどう,200(円) 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) 5,みかん,50(円) ある果物を紹介するページがあったとして、 そのページには、他のオススメの果物として、csvからデータを読み込み、 その果物よりも安いもの3件を表示するという仕組みを作ろうと思っています。 ただ、安いものが3件無かった場合に、それよりも高いが、それに近い価格の果物を あわせて3件まで紹介したいと思っています。 今作っているPHPは以下の通りです。 ページに紹介されている果物=($fruits),価格=($price) です。 <?php $Data=file('/data.csv'); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); #表示ページの果物とCSVのline1が違い、価格が$priceよりも小さいものを3件まで表示 if($fruits != line1 and $price >= line2 and $j<3 ){     echo $line1 $line2.' </br>'; $j++; } } ?> で、価格が低いものを3件まで表示することはできました。 ぶどう200円のページであれば、 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) が表示されるようにはできました。 りんご100円のページには、 4,バナナ,80(円) 5,みかん,50(円) の2件のみが表示されています。 上記りんごのように、安いものが3件なかった場合に、 それより価格が高いが一番近いものから順に3件になるまでデータを 取りだしたいと思っています。 今回のりんごであれば、リンゴより安い、バナナ80円、みかん50円、 それに加え、リンゴより高いがリンゴの価格に一番近い、なし150円を表示させたいです。 みかんの場合には、安いものがないため、高いがみかんに近いものから3つ 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) を表示させたいです。 一体どうしたら良いのか、検討も付かず、教えて頂きたいです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • テキストデータを日付順に並べ替えたい

    テキストデータを日付順に並べ替えたい どのようなデータと言いますと。 果物 ("さくらんぼ" "2010-9-11") 果物 ("ぶどう" "2005-3-26") 果物 ("みかん" "2010-8-1") 果物 ("りんご" "2009-1-11") の様に一行に名詞か何かがあってその後ろに日付が表示されています。 これを日付順にしたいのですが、1000行以上あるので1行づつ何か操作するのは大変です。 何か簡単に日付順にする方法はないでしょうか。word・Excelはあります。

  • SQLでグループ化して降順表示がうまくいきません

    個人的にMysql、php環境でサイトを作っております。 そこで、素人質問で申し訳ありませんが、SQLでお伺いしたい点があります。 例えば下のようなテーブルがあります。 ▽果物テーブル 果物ID | 果物名 | 売れた日付 1 | リンゴ | 2008/11/1 2 | みかん | 2008/11/2 3 | みかん | 2008/11/3 4 | リンゴ | 2008/11/4 これを、 『最近売れた』果物順に、『グループ化』して並べ替えたいと思い、 下記のようなsqlを組みました。 $sql = "SELECT 果物名, FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC"; 意図としてはリンゴ、みかんの順に並べ替えたいのですが、 みかん、リンゴの順に表示されてしまいます。 想像では、グループ化したとき、古い日付の方が残ってしまい、 | リンゴ | 2008/11/1 | みかん | 2008/11/2 この部分を対象にして日付を降順にしてしまうからだと思うのですが、 これをうまく解決する方法が分かりません。 MSアクセスなどですと先に二重にクエリをかけるなどすることで 「先に降順で並べ替えたクエリを出し、その後グループ化させる」 など処理が簡単なのですが、phpではどうするのかいまひとつ分からず・・・ 申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • リストボックスから選択、結果を表示する。

    お世話になります。 perlでcgiを作りたいのですが、 簡単なsampleはないでしょうか。 参考になるようなページを教えていただければ十分です。 【機能】 ファイルxをリストボックスから選択させ、 内容を表示する。 【ファイルxの内容例】 リンゴ、青森、300 ミカン、和歌山、60 バナナ、輸入、180 というように、品名、産地、単価の項目が列んでいます。 【動き】 リストボックスでファイルxを表示させ、 選ばれた項目の単価を表示する。 【イメージ】 リストボックス リンゴ ミカン バナナ ↓ ミカンを選ぶ ↓ 単価は60円です。 と表示する。 以上、分かりにくいですが、 宜しくお願いします。

    • ベストアンサー
    • Perl
  • PHP文字コードの不思議!?

    PHP文字コードの不思議!? さくらインターネットでは問題なかったものがヘテムルに移行すると起こりました。 PHPにてcsvを読み込んで表示しています。 [ csv ] 01,りんご 02,orange 03,orangeりんご 04,りんごorange というよな、csvファイルを読むと・・・ 01 りんご→何も表示されない 02 orange→orange 03 orangeりんご→orangeりんご 04 りんごorange→orange 化けることはないですが日本語が表示されず、 しかし冒頭が欧文の場合、続きの日本語は表示されます。 (日本語をあなどとすると正常に表示します) csv、php、共にUTF-8で作成しています。 さくらでは起こらなかった現象ですが・・・ php.iniなど特にさわっておりません。 どう対処すればよいでしょうか???

    • ベストアンサー
    • PHP
  • 【PHP】 クッキーについてです。

    少し省略してます。 aaa.php ページ内の文字リンクを、たとえば「りんご」をクッリクしたら <a href="bbb.php?no=1"target="main">りんご</a> <a href="bbb.php?no=2"target="main">みかん</a> <a href="bbb.php?no=3"target="main">ぶどう</a> bbb.php に no=1 で 「1」の数字を送り そして、bbb.php で・・・ $no=htmlentities($_GET["no"]); setcookie('abc',$no,time()+86400); $abc=$_COOKIE["abc"]; header("Location:http://○○○/ccc.php") 処理後、ccc.php に行くようにして ccc.php で・・・ $no = htmlentities($_GET["no"]); print '$noです'; としてるのですが、クッリクしてから、すぐに今度は「みかん」をクリックすると 2~3秒 間を空けないと、表示は「りんごです」のままなんです。 「りんご」をクリックしてから、2~3秒 間を空けてから「みかん」をクリックすると 表示は「みかんです」となるのです。 クッキーの処理が遅いのでしょうか? どうしたら、立て続けにクリックしても、ちゃんと表示される様になるのでしょうか? 理想は「りんご」クリック後、2~3秒 間を空けなくても、すぐに「みかん」クリックで 「みかんです」と表示されるようにしたいのです。 ちなみに、実行はエラーはでません。 できれば、私はPHPの経験が浅いので、分かりやすく詳しく教えて頂けると非常に助かります。 中途半端な知識で対応できず苦しんでおります。 何方か、どうか、教えて下さい。 宜しくお願いします。

    • 締切済み
    • PHP