アプリ版:「スタンプのみでお礼する」機能のリリースについて

CSVテキストでforeachによる次の行の値を取得し、計算し表示したいのですがわかりません。
どなたか処理の仕方をアドバイスを下さい。

・csvの内容
2012,20,山田,奈良(1行目)
2012,15,川上,東京(2行目)
2013,10,山本,北海道(3行目)

・処理
$lines = @file($logfile);
foreach ($lines as $value){
list($value01,$value02,$value03,$value04)= explode(",", trim($value));
echo "表示: $value01 $value02 $value03 $value04";

  *ここで処理:この行の$value02と次の行の$value02を比較計算した値を表示

}

A 回答 (2件)

foreachでやるなら、「現在の行を処理して次の行と比較」ではなく「前の行を処理して現在の行と比較」にすればいいんじゃないですかね。



$lines = @file($logfile);
$prev = '';
foreach ($lines as $value){
if ($prev !== '') {
list($value01,$value02,$value03,$value04)= explode(",", trim($prev));
echo "表示: $value01 $value02 $value03 $value04";
list($value01w,$value02w,$value03w,$value04w)= explode(",", trim($value));
// $value02 と $value02w を比較計算
}
$prev = $value;
}
if ($prev !== '') {
list($value01,$value02,$value03,$value04)= explode(",", trim($prev));
echo "表示: $value01 $value02 $value03 $value04";
}


fileで読んでいますから(数字添え字だし要素数も既知なので)foreachでなくforで回してもいいかもしれません。そうすれば(最大添え字を超えない範囲で)添え字+1を参照すればいいかと。
    • good
    • 0

next()やcurrent()がつかえるかも


ただし最終行の処理が必要

foreach($lines as $value){
list($value01,$value02,$value03,$value04)= explode(",", trim($value));
echo "表示1: {$value01} {$value02} {$value03} {$value04}<br>";
if(next($lines)!==false){
list($value01,$value02,$value03,$value04)= explode(",", trim(current($lines)));
echo "表示2: {$value01} {$value02} {$value03} {$value04}<br>";
}
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!