構文中にエラーがあることはわかるのに、何のエラーなのか詳細がわかりません。 - PHPプロ!Q&A掲示板

4885

  • 募集中!! 0P

構文中にエラーがあることはわかるのに、何のエラーなのか詳細がわかりません。

質問日時 / 2017年11月21日 14:03    回答数 / 2件

Questioner:  kanao  このエントリーをはてなブックマークに追加 

キーワード / syntax error    デバック    エラーの種類   

https://jp.piliapp.com/php-syntax-check/のように、syntax errorを見つけられるようなもので何かいいものはありますでしょうか?
もしくはこういう方法でデバックをピンポイントで見つけていますといった方法があれば、ご教授いただきたいです。
いつも構文中にエラーがあることはわかるのに、何のエラーなのか詳細がわかりません。
よろしくお願いします
  1. <?php
  2. for ($i=1;$i>=1000;$i++){
  3. if($i>=501){break;}
  4. echo $i;
  5. echo'<br>';
  6. }
  7. ?>
どこが間違っているのか・・・・
上記のリンクでエラーを探しましたが、no syntax errorです。
でもなかなか前に進めないのでどこかが間違っているはずなのですが・・・。


ツリー一覧

┣A01friendsこんにちは!まず、計算式なのですが、【 >= 】→ 
┗A02shimix#書いたとおりに動いていますね 制御構造がどうい

回答一覧

並び替え:

A01
answererfriends [11月24日 15:13] (最終編集:11月24日 15:23)

こんにちは!まず、計算式なのですが、【 >= 】→ 以下という意味となります。

http://php.net/manual/ja/language.operators.comparison.php

2行目の for ($i=1;$i>=1000;$i++){ ですと、1周めを迎える前にFor文から弾かれてしまうかと思われますが、大丈夫でしょうか?同じ理由で3行目も501回目を迎える前にBrakeされますので、ご注意ください。

また、蛇足となりますが5行目のechoのあとにスペースがございません。

このようなご回答でよろしいでしょうか?よろしくお願いいたします。

===追記===

一応、ローカルで走ったものご報告します。
echo文は、{}で囲んだり、.(ドット)を置くと連続して表示することができますのでよろしくお願いいたします。

<?php
    for ($i=1;$i<=1000;$i++){
    if($i>=501){break;}
    echo "{$i}<br>";
    }
?>

また、このような場合ソフトウエアでは判断が難しい(構文のチェックはできますが、プログラムの内容までは判断ができない場合がある)ので、ご要望が叶えられない事があります。というか、自分でだいたい分かることは自分でやったほうがいいですし、エラーを逐一出していると、作業効率が大幅に落ちてしまう(パニックになってしまう)ので頭の片隅に置いていただければと思います。(メーデーという航空事故のドキュメンタリーを見ているとよくわかります、)

ちなみに、私のですとNetBeansIDEを利用しております。For文とかIF文の補完はしてくれるので便利でございます

この意見に回答する

ツリーへ TOPへ

A02
answerershimix [11月29日 12:25] (最終編集:11月29日 12:27)

#書いたとおりに動いていますね

制御構造がどういう動作をするかはマニュアルに記述があります。

http://php.net/manual/ja/control-structures.for.php

最初に $i=1 が評価(実行)され、次に(繰り返し処理の先頭で)$i>=1000 が評価されます。評価した結果が偽(false)なので(何も実行されないまま)ループを抜けます。

for の真ん中の式は「真(true)になるまで」実行される条件ではなく「真(true)の間」実行される条件です。


というか、なぜ前回のソースからそこを変えたのかが謎です(汗

http://www.phppro.jp/qa/4884




(以下蛇足)

>構文中にエラーがあることはわかるのに、何のエラーなのか詳細がわかりません。

マニュアルで文法を確認してくれとしか言えません。phpスクリプトを(実行するために)解析しようとして文法的におかしいので解析不可なのですから、明らかにマニュアルと違う部分があるハズです。
unexpected ×× となっていれば、××があるべきではない箇所に書かれている・・というくらいはわかりますよね(英語を読む気がないなんてことはありませんよね)。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)