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

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

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

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

Q&A

解決済

2回答

3077閲覧

PHPのfor文における条件式の書き方について

naoki855

総合スコア75

PHP

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

0グッド

0クリップ

投稿2016/04/03 15:04

以下のfor文ですが、第1式と第3式にTrueを入れているのでしょうか?

php

1for(true; $isEnd == false; true) { 2 /* 3 中略 4 */ 5 echo "Yes or No?(y/n)\n"; 6 $is_yes = fgets(STDIN); 7 if($is_yes == "n\n") { 8 $isEnd = true; 9 } 10}

私の考えは、
第1式: $isEnd = true(初期条件)
第3式: $isEnd = true(処理の最後に)
なのですが、省略して書けるものなのでしょうか?
また、そもそも見当違いでしょうか?

申し訳ありませんが、宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

for(true; $isEnd == false; true) {は文法的に間違ってはいませんが、変です。おそらく、入門したての人が書いたプログラムではないかと思います。
for(;;)の3カ所はそれぞれ全部省略できます。第一と第三の場所に、trueと書くのは無意味です。

$isEndの初期化が書かれている部分に無いのですが、このプログラムがちゃんと動いているとすれば、書かれている部分の直前に$isEnd = false;というコードがあるのかと思います。
普通は、forでなく、

PHP

1while($isEnd == false) {

あるいは、$isEnd = false;をforの中に入れて、

PHP

1for($isEnd = false; $isEnd == false;) {

と書きます。

私の考えは、

第1式: $isEnd = true(初期条件)
第3式: $isEnd = true(処理の最後に)
なのですが、省略して書けるものなのでしょうか?
また、そもそも見当違いでしょうか?

残念ながら、どちらも見当違いです。

投稿2016/04/03 16:03

otn

総合スコア84499

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

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

naoki855

2016/04/03 16:10

ご回答いただき、ありがとうございます。 このコードは私が書いたわけではなく、他の方の書いたコードを私が読んでいるところでした。 ご指摘の通り、`isEnd = false;`はこのfor文の前にて宣言されておりました。 やはり、書き方としてはwhileに近いのですね。 ありがとうございます。
otn

2016/04/03 16:29

何のために読んでいるのでしょうか?実用プログラムじゃ無さそうなので、「初心者の作ったプログラムのメンテナンスを押しつけられた」というわけでも無いと思いますが。 勉強のためであれば、入門者のプログラムは読まない方が良いですよ。
guest

0

省略できます。

第3式: $isEnd = true(処理の最後に)

ここで書かれている「処理」がループ1回ぶんの「処理」ならあっています。ループ全体の処理なら違います。

【PHP: for - Manual】
http://php.net/manual/ja/control-structures.for.php

for (式1; 式2; 式3)

最初の式(式1)は、ループ開始時に無条件に 評価(実行)されます。

各繰り返しの開始時に、式2が評価されます。 その式の値がTRUEが場合、ループは継続され、括弧 内の文が実行されます。値がFALSEの場合、ループの 実行は終了します。(続く……)

各繰り返しの後、式3が評価(実行)されます。
各式は空にすることもできますし、複数の式をカンマで区切って指定することもできます。

投稿2016/04/03 15:28

編集2016/04/03 16:14
kei344

総合スコア69400

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

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

naoki855

2016/04/03 16:08

ご回答いただき、ありがとうございます。 1回きり、というわけではないのでやはり違和感があります。
kei344

2016/04/03 16:17

> 1回きり、というわけではないのでやはり違和感があります。 「処理の最後に」と書かれていたことに対して、「処理」の指しているものが複数考えられたので、「ループ1回」「ループ全体」の場合について書いたつもりですが、意図が伝わらなかったようで残念です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問