PHPでファイル操作の勉強をしていた時、if文内のfopen,fwrite,fgets,関数を使った条件の書き方について分からない点があったのでお聞きしたいです。以下にコードを記載いたします。
<?php $filename = './challenge_log.txt'; $log = ''; $errors = array(); if($_SERVER['REQUEST_METHOD'] === 'POST'){ $log = date("m月d日 H:i:s") . "\t" . $_POST['comment']; if(($fp = fopen($filename,'a')) !== FALSE){ if(fwrite($fp,$log) === FALSE){ echo 'ファイル書き込み失敗' . $filname; } fclose($fp); } } $data = array(); if(is_readable($filename) === TRUE){ if(($fp = fopen($filename,'r')) !== FALSE){ while(($tmp = fgets($fp)) !== FALSE){ $data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8'); } fclose($fp); } }else{ $data[] = 'ファイルがありません'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post"> <p>発言:<input type="text" name="comment"> <input type="submit" value="送信"> </p> </form> <?php foreach($data as $value){?> <p> <?php echo $value; ?></p> <?php } ?> </body> </html>
if(($fp = fopen($filename,'a')) !== FALSE)やwhile(($tmp = fgets($fp)) !== FALSE)なんですが、while($tmp = fgets($fp) !== FALSE)のようにカッコをひとつ削ってもいいように思えます。while文でしたら何故$tmpの前にカッコが必要なのでしょうか?
説明がうまくできず申し訳ないですが、教えて頂けたら幸いです。
回答3件
あなたの回答
tips
プレビュー