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

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

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

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

Q&A

解決済

2回答

5544閲覧

PHP構文チェックの方法 エラーの原因特定について

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2017/11/24 04:43

https://jp.piliapp.com/php-syntax-check/のように、構文チェックのサービスを使い、syntax errorを見つけられるようなもので、これとは別でいいものはありますでしょうか?
こういう方法でデバックをピンポイントで見つけていますといった方法や、もっとデバックの種類が特定しやすい、分かりやすいものがあれば、ご教授いただきたいです。
(いつも構文中にエラーがあることはわかるのに、何のエラーなのか詳細がわかりません。..)
よろしくお願いします。

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

又、上記の短い構文ですが、エラーが出ますがどこが間違っているのか?
構文チェックでも、no syntax errorと出ます。
勉強サイトの課題なのですが、なかなか次に進めないのでどこかが間違っているはずなのですが・・・。

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

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

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

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

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

guest

回答2

0

上のコードは、文法的な問題はなく、エラー1つ出さずに実行自体は行われます(3v4lによる実行例)。

なので、エラーではなくバグの部類になります。「何を実行しようとしてそのようなコードを書いたか」、一部の例を除けばコンピューターが忖度することもできませんので、自動検知は文法エラーに対して、極めて難しいです。

「自動テスト」と言って、「この値を入力すればこんな出力が得られるはず」というのを書いていってテストしていく、という手法は広く行われています。

投稿2017/11/24 04:49

maisumakun

総合スコア145183

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

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

退会済みユーザー

退会済みユーザー

2017/11/24 05:49

自動テストってどやってしますか?
退会済みユーザー

退会済みユーザー

2017/11/24 06:27

ありがとうございます!! 頑張ります!!
guest

0

ベストアンサー

構文に間違いはないですね
あえていえば「echo'<br>';」にスペースがほしいかなくらいです→「echo '<br>';」
別になくても問題ありません。

for文のロジックに問題はあります

「for(初期値;条件;1回後の処理)」ですから
$iの初期値が1で、$iが1000以上ならばとくればその時点で条件にあわないので
このループは実行されません。
普通に書くなら「$i<=1000」でしょう。そうすれば1から500までの数値が表示されます

sample

PHP

1for ($i=1;$i<=1000;$i++){ 2if($i>=501){break;} 3echo $i.'<br>'.PHP_EOL; 4}

投稿2017/11/24 04:51

編集2017/11/24 05:45
yambejp

総合スコア114759

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

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

退会済みユーザー

退会済みユーザー

2017/11/24 05:05 編集

早々のご返事ありがとうございます。 break文の勉強で、 for文を用いて1から1000までの数字をechoしてください。 ただし、501以上の数字を表示しないようにbreak文を用いてfor文を抜けてください。 echoするときに改行も入れるようにしてください。 という課題でした。 ロジックに問題はありますということは、for(初期値;条件;1回後の処理)ということですよね? どういうことですか〜?当方初心者にて詳しく教えて頂けると助かります.. これがクリアできないと次に進めませんでした。。。
yambejp

2017/11/24 05:06

つまり不等号の向きを逆転することで解決したという認識でよろしいですか?
退会済みユーザー

退会済みユーザー

2017/11/24 05:41

まだ解決できていません。。。 if文の不等号は反転させてみましたが、それでも無理でした。.. 「1」が出力されていません。というエラー表示が出ます。 最初のfor文の$i=1の「1」のことなのか? if文の$i>501の「1」が何か関係しているのか? 出力なのでechoの部分なのか? という疑念が湧くくらいです。
yambejp

2017/11/24 05:46

誤解しているようなのでsampleつけておきました > if文の不等号は反転させてみました そうではなくforの2番目の条件文の不等号が逆です
退会済みユーザー

退会済みユーザー

2017/11/24 06:05

あー解決できましたっ! 不等号の向きではなく、、、501を500にしたら解決しました。 プログラム以前の問題で501以上、ということは500まででループさせるようにしなければいけなかったということみたいです。すみません。。。ありがとうございましたっ!
yambejp

2017/11/24 06:12

なるほど途中から$i>501としていたのですかね? 今回の場合だと「500を超えたら($i>500)」と 「501以上になったら($i>=501)」はほぼ同義なので イコールの付け方にも気をつけたほうがいいでしょう 実際にはインクリメントで処理しているので 「501になったら($i===501)」でも処理は同じです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問