質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

210閲覧

phpの制御構文について

banianizm

総合スコア92

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/12/12 13:20

お世話になります。

phpでの制御構文での質問があります。

<?php $fp=fopen('fileA.csv','r'); while($row=fgets($fp)) { $data=explode(',',$row); echo $data[0],',', $data[1], ',', $data[2], ',', $data[3]."<br>"; if($data[0] == prev($data[0])){ echo "a"; } } fclose($fp); ?>

上記のようなコードがある場合

if($data[0] == prev($data[0]))

でエラーが出ます。

エラーログです。

Warning: prev() expects parameter 1 to be array, string given in C:\xampp\htdocs\1212.php on line 9

エラーにならないようにループさせて1週目の$data[0]と2週目の$data[0]を比較するにはどのように書けばいいのでしょうか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

prevは引数にarrayを渡すのに対し、stringを渡しているためエラーになっています。

記載された比較処理を満たすのみであれば、前回の$data[0]の値を保持する変数(以下の例では、$prev_data)を別途用意すれば実現できます。

PHP

1$prev_data = '';      // ←初期値は仕様に合わせて変更要 2while($row=fgets($fp)) { 3$data=explode(',',$row); 4echo $data[0],',', 5$data[1], ',', 6$data[2], ',', 7$data[3]."<br>"; 8if($data[0] == $prev_data){ 9echo "a"; 10} 11$prev_data = $data[0];

投稿2018/12/12 13:34

aikon_marimo

総合スコア1083

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

変数で持って置けばよいのでは。

PHP

1<?php 2$fp=fopen('fileA.csv','r'); 3$tmp=''; 4while($row=fgets($fp)) { 5 $data=explode(',',$row); 6 echo $data[0],',', 7 $data[1], ',', 8 $data[2], ',', 9 $data[3]."<br>"; 10 if($data[0] === $tmp){ 11 echo "a"; 12 } 13 $tmp=$data[0]; 14} 15fclose($fp); 16?>

投稿2018/12/12 13:30

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

banianizm

2018/12/12 13:58

申し訳ございません。 1周目と2周目の比較、2周目と3周目の比較と続いていきます。 なので、変数に入れておく、で対応できないかもしれません。
kei344

2018/12/12 14:03

最後の$tmp=$data[0];で上書きするからそう(1周目と2周目の比較、2周目と3周目の比較に)なりますよ。
banianizm

2018/12/12 14:06

ありがとうございます。 実行させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問