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(円)
を表示させたいです。
一体どうしたら良いのか、検討も付かず、教えて頂きたいです。
よろしくお願い致します。
お礼
出来ました!ありがとうございます。 初心者にて、まだまだ >(蛇足) >CSVデータであれば本来はfgetcsvで読み込むべきですが「文字列にカンマが含まれない」のであれば、これでもいいかな・・・ そうなんですね。何から何まで初心者でまだまだ勉強が必要です。今後も何かあればよろしくお願いします!