array_reverse()の使い方について

このQ&Aのポイント
  • PHPでarray_reverse()を使ってCSVデータを昇順に表示したいがうまくいかない。
  • data.csvのデータを降順にしているため、昇順に表示するためにはarray_reverse()を利用する必要がある。
  • forループの前にarray_reverse()を追加するが、うまく表示されないため困っている。
回答を見る
  • ベストアンサー

array_reverse()の使い方について

array_reverse() の使い方が分かりません・・・。 CSV(降順)のデータを読み込んでPHPで表示する仕組みを作っています。 そのCSVを昇順にしたく、array_reverse() を使っても、思うようにデータが表示されません。 CSV(data.csv)は以下の通りです。価格で降順になっているものです。 line0,line1,line2 1,ぶどう,200(円) 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) 5,みかん,50(円) PHPは以下の通りです。 <?php $Data=file('/data.csv'); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($j<3 ){ echo $line1 $line2.' <br />'; $j++; } } ?> $Data を 昇順にしたいので(もともとのCSVを昇順で作ることはできません)、 array_reverse($Data) をどこかに入れたらいいと思うのですが、forの前、後ろといろいろ入れてみたのですが、思ったように表示がされず困っています。 お力おかしください!!!よろしくお願いします。

noname#163772
noname#163772
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1
noname#163772
質問者

お礼

出来ました!ありがとうございます。 初心者にて、まだまだ >(蛇足) >CSVデータであれば本来はfgetcsvで読み込むべきですが「文字列にカンマが含まれない」のであれば、これでもいいかな・・・ そうなんですね。何から何まで初心者でまだまだ勉強が必要です。今後も何かあればよろしくお願いします!

関連するQ&A

  • 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
  • array_spliceでの置き換えについて

    リファラでカウントカウントを図りたいと考えています。 内容としては、http://www.hoge.net/からのアクセスに対して 『hoge』だけと抽出し、格納しているCSVと照合し正ならカウント+1として「array_splice」で置き換えてる 単純なプログラムなのですが書き込まれるCSVに何故か空の行が下記のように挿入されてしまいます。 CSVの中身 --------------------------------------------- 0,http://www.sample.net 0,http://www.hoge.net 0,http://www.test.net 0,http://www.xxxx.net ↓↓↓↓↓↓↓↓↓↓↓ 0,http://www.sample.net 1,http://www.hoge.net [空白] 0,http://www.test.net 0,http://www.xxxx.net --------------------------------------------- また、アクセスする度に空白行が増えていく状況です。 別のプログラムでも「array_splice」は使っていますが いずれも正常に置き換えられています。 ソースを記述しますので何が原因なのかわかりません。 何方かアドバイスを頂ければと思います。 ソース --------------------------------------------- $string = $_SERVER['HTTP_REFERER']; $regex = "(http:\/\/)([^\/]+)(\/.*$)?"; match ( $string, $regex ); function match ( $string, $regex ) { if ( preg_match ( "/".$regex."/i", $string, $match ) ) { $keyURL=$match[2]; $Data=file("../csv/sample.csv"); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if(ereg("$keyURL",$line[1])){ $count="$line[0]" + 1; $lines=array($count,$line[1]); $lines=implode(",",$lines); $lines=$lines."\n"; array_splice($Data,$i,1,$lines); $fp=fopen("../csv/sample.csv","w+"); flock($fp, LOCK_EX); foreach($Data as $item)fputs($fp,$item); fclose($fp); } } } } --------------------------------------------- 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 改行されたデータの表示がうまくいかないのですが

    システム管理 ネットワーク管理 というように改行したデータをファイルに取り込んで 読み込んだ時に表示されるデータが"システム管理"だけになってしまうのですが... $data_all = file("maillog.csv"); // データをHTML表示用に処理(降順) for($i=count($data_all)-1; $i>=1; $i--){ $data_array = explode(",",$data_all[$i]); $data_array = htmlspecialchars($data_array); nl2brも同様でした。 何かうまい方法はないでしょうか?

    • 締切済み
    • PHP
  • aaa.csvとbbb.csvを条件で抽出して並べたいです。

    aaa.csvとbbb.csvを条件で抽出して並べたいです。 $array = file("aaa.csv"); foreach($array as $line){ $line = explode("," , $line); if($line[1] == "0"){ $array = file("bbb.csv"); foreach($array as $item){ $item = explode("," , $item); if($item[2] == $line[0]){ $menu = $item[5]; } } } } aaa.csvの$line[1]が「0」のときbbb.csvの$item[2]と$line[0]が一致するものを表示させたいです。 素人ですいませんが教えてください。

    • 締切済み
    • PHP
  • PHPで指定件数のデータを表示させる方法

    お世話になっております。 下記のようなPHPブログラムでitem.csvのデータをランダムに指定件数表示させようと思っています。 このままですとデータは1件か2件表示され、$i<=3にすると2件か3件表示されます。 require_once('common.php'); $Data=file('item.csv'); shuffle ($Data); for ( $i=1; $i<=2; $i++ ){ $line=explode(",",$Data[$i]); print($line[2]); print($line[3]); } これを1を設定すれば1件、3を設定すれば3件というように、数字の件数を表示させたいと思います。 ご教授いただければ幸いです。よろしくお願いいたします。

    • 締切済み
    • PHP
  • CSVファイルの上書き

    CSVファイルを$line[0] = $nowの時、上書きするということをしたいのですが、array_spliceでうまくいきません。 アドバイスお願いします。 $fp = fopen('log/order.csv', 'a+'); flock($fp,LOCK_EX); if ($fp) { require_once( "./common.php" ); $AddressData = LoadTextFile( "./log/order.csv", "SJIS", "SJIS" ); if ( $AddressData == false ) { exit; } else { for ( $i = 0; $i < sizeof( $AddressData ); $i++ ) { $line = explode( ",", $AddressData[ $i ] ); if($line[0] = $now){ array_splice($line, 1, 3, array("1","2","3")); #fputs($fp, $buf2); flock($fp,LOCK_UN); fclose($fp); } } } }

    • 締切済み
    • PHP
  • 検索時エラー

    はじめまして PHPを用いてsystem.csv内を検索するんですが、ある文字を入力すると Warning: eregi() [function.eregi]: REG_BADRPT と表示されてしまいます。 例えば: 藤、++ などです。 なぜでしょうか? またどのように修正してあげたらいいのでしょうか? よろしくお願いいたします。 <?php if($_GET["key"]==""){ print"キーワードを入力してくださいね"; }else{ $KeyWord=$_GET["key"]; $KeyWord=htmlspecialchars($KeyWord); $KeyWord=mb_convert_encoding($KeyWord,"EUC-JP","auto"); $Result=array(); $Data=file("system.csv"); for($i=0;$i<sizeof($Data);$i++){ $lines=strip_tags($Data[$i]); if(eregi($KeyWord,$lines,$text_b)){ array_push($Result,$Data[$i]); } } ?> <?php $n=sizeof($Result); if($n==0){ print"見つかりませんでした"; }else{ print"{$n}件見つかりました"; ?> <ul> <?php for($i=0;$i<sizeof($Result);$i++){ $line=explode(",",$Result[$i]); ?> <li><?=$line[2]?><a href="item.php?id=<?=$line[0]?>"><?=$line[1]?></a></li> <?php } } } ?>

    • 締切済み
    • PHP
  • array_randを使いたい?

    phpでarray_randを使ってCSVのデータをランダム表示させたいです。 phpの知識がなくどのようにすればいいかわかりません。 CSVは id,商品名,説明文,価格,画像URL,リンク先URL, こんな感じになっています。 いろいろと調べてランダムにするにはarray_randを使えばいいのがわかったのですが、どのようにPHPを書けばいいかわかりません。 すいませんが、詳しく教えていただけないでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • データを10件ずつ表示させたい

    以下のソースでorder.csvを降順に特定の項目($line[6])が存在する時、表示するという処理をしています。(確認済み) 今、全件表示される状態なのですが、特定の項目($line[6])が存在する時 10件表示ずつに拡張したいのですが、アドバイスお願いします。 また、10件以上データが存在する時「次へ」ボタン「前へ」ボタンをつけるにはどうしたらよいでしょうか。 $AddressData = LoadTextFile( "./log/order.csv", "UTF-8", "SJIS" ); if ( $AddressData == false ) { exit; } else { // データを後ろから読む for ( $i = count($AddressData) - 1; $i >= 0; $i-- ) { $line = explode( ",", $AddressData[ $i ] ); // 一行の構成が$line[0],$line[0],$line[1],$line[2],$line[3],$line[4],$line[5],$line[6]となって、$line[6]が存在するとき if($line[6]){ echo( $line[ 2 ] ); echo " "; echo( $line[ 6 ] )."<br>"; } } } よろしくお願いします。

    • 締切済み
    • PHP
  • 2次元配列から1次元配列へのデータ読み込み方法をお尋ねします。

    いつもお世話になります。 readtest.csvというCSVファイルを作り、データを次のように入れています。 a,apple,301,23 b,orange,518,47 c,grape,278,19 d,banana,189,36 この3列目のデータを取り出して1次元配列に入れるため、DBtest.phpを次のように書きました。 01: <?php 02: $Data=file("../readtest.txt"); 03: for ( $i = 0; $i < sizeof( $Data ); $i++ ) { 04: $line=explode(",",$Data[$i]); 05: echo $line[2]; // 301518278189 06: // $xdata=implode(",", $line[2]); 07: } 08: ?> この実行結果は、「301518278189」となります。なぜコンマが入らないのでしょうか? 5行目をコメントアウトして6行目を生かして実行すると、 Warning: implode() [function.implode]: Bad arguments. in C:\Program Files\Apache Group\Apache2\htdocs\DBtest.php on line 6 となります。 3列目のデータを抜き出して配列を作るにはどのようにすれば良いでしょうか? よろしくご教示頂ければ幸いです。

    • ベストアンサー
    • PHP

専門家に質問してみよう