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

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

ただいまの
回答率

90.49%

  • PHP

    20764questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 415

tonny

score 62

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

for(true; $isEnd == false; true) {
   /*
      中略
   */
   echo "Yes or No?(y/n)\n";
   $is_yes = fgets(STDIN);
   if($is_yes == "n\n") {
       $isEnd = true;
   }
}


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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

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

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

while($isEnd == false) {


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

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


と書きます。

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/04 01:10

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

    やはり、書き方としてはwhileに近いのですね。
    ありがとうございます。

    キャンセル

  • 2016/04/04 01:29

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

    キャンセル

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/04 01:08

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

    キャンセル

  • 2016/04/04 01:17

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

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20764questions

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