• ベストアンサー

制御構造の始まりと終わりの目印について

皆さん、お世話になっています。またよろしくお願いします。 PHPの勉強をしていて気になったことがあります。 ifやループなどの制御文を使っていて、今まで馴染み深い中括弧{}を使っていましたが、最近になって始まりは:で終わりがend制御分でくくってるのを見ました。 同じ(1つの)PHPファイルに {} と :とend制御文 を混ぜて使うことはあるものでしょうか? 何か使い分けのコツがありましたら教えてください。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

PHPでテンプレートエンジンなどを使わないで、HTMLとPHPスクリプトを分離しようとした場合などに、用いることがあります。 ------test.php------- <?php $array = array("a", "b", "c", "d");//何らかのデータ配列があって、 include "./template.html";//HTMLファイルをPHPスクリプトから分離させておいてスクリプトの最後にインクルード ?> ------template.html------- <html> <body> <?php foreach($array as $value):?> <div><?php echo $value?></div> <?php endforeach;?> </body> </html> ・・・こんな感じで。 PHPの構文をHTML中に記述する場合に、if/endifやforeach/endforeach などを利用するとどこからどこまでが何、というのが分かりやすくなる場合もあります。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

http://www.php.net/manual/ja/control-structures.alternative-syntax.php これのことですよね。 個人的にはコロンをつかった構文の使用頻度はかぎりなく0に近いです。 括弧で処理した方が、構造が可視化しやすく、エディタの インデントなどもきれいに表示されるケースが多いようですし。

関連するQ&A

  • Forループの制御について

    VB 2005,Framework2.0を使用しています。 For文を使ったループについてお尋ねしたいことがあります。 For i As Integer = 0 To 10     ’処理 Next i とあったとします。 そうするとループ変数iが0から10になるまで連続してループを行うのですが、これをある条件の時に現在のループ変数から一つ飛ばして次のループからまた処理を行いたい場合どのようにすれば良いのでしょうか? 例えば0~10回中に、現在5回目で特定の条件が一致したときその次の6回目のループは飛ばして7回目のループから再開したいです。 ちなみにこの様に書いても0から10回必ずループされてしまいました。 Dim TEST(10) As Integer TEST(5) = 1 For i As Integer = 0 To 10 If TEST(i) = 1 Then i = i + 1 End If Next i

  • 【C言語初心者です】制御文をループに関して

    C言語習いたての者です。どうぞよろしくお願いします。 1~20の範囲内で数値を5回入力させ、入力順に画面に出力するプログラムを作りたいと思っています。 この中で、範囲外の数値か、入力済みの数値が入力された場合に、 それに応じたエラーメッセージを表示させ、再入力を要求する仕組みを 加えようと思い、 制御文を用いてどういうループにすればいいか考えているのですが、 思うような結果が返ってきません。 今まで私が考えていたループの構造としては、 int count = 0;<<ループ用カウンター宣言・初期化>> if(<<入力された数値が指定範囲内の時>>) { _ for(<<countが範囲内かどうか>>) _ { __ if(<<入力された数値が入力済みではない時>>) __ { ___ break;<<ループ終了。次の数値入力>> __ } __ <<数値重複用エラーメッセージ出力>> _ } _ break;<<ループ終了。次の数値入力>> } <<範囲外数値用エラーメッセージ出力>> 条件としては、 ・配列と制御文を用いる ・標準ヘッダファイルは<stdio.h>のみを用いる 上記のループをどう修正したらいいか、を教えていただけるとうれしいです。

  • 制御文がHTMLのコメントのテンプレートクラスってないですか?

    PHPには、ロジックとデザインの完全分離が行えて、ブラウザで開いてもIF文などの制御文がHTMLのコメント<!-- -->になっていて、デザインが崩れないSmarty等の素晴らしいテンプレートクラスがたくさんあるのですが、JavaにはVelocity等テンプレートクラスはたくさんあっても制御文がHTMLのコメントでない仕様の物しかないようです。どこかにブラウザで開いても綺麗に見えるJavaのテンプレートクラスはないでしょうか? 基本的には、IF、LOOP、LOOPのネスト、LOOP内のIFぐらいの機能があれば十分です。よろしくお願いします。

  • phpのこの画像の解釈についてあっていますか?

    phpのこの画像の解釈についてあっていますか? もしも、echo $str;が波括弧?の内側にある場合 if文の条件がfalseのためそれ以降のプログラムが実行されず停止 何も出力されず終わる 今回の場合、echo $str;が波括弧?の外側にあるため if文がfalseのため中括弧の終わり } までの処理は実行されず 単独でecho $str;を実行しようとしたため 変数strが定義されていないのでエラーが出力された

    • ベストアンサー
    • PHP
  • ファイル制御

    visual basic6について質問です。 かなり複雑な制御になるので質問が意味不明かもしれませんが どうにか理解していただけたら回答お願い致します>< Wordを起動するというものなのですが、管理番号からファイル名を作成するというものです。 実行させたいことは選択された管理番号のファイル名が存在したら語尾に数字をカウントさせて保存させるというものです。 現在のソースは以下のようになっています。 データベースを参照して新規でなかったらwordに1を格納しています。 wordiniは保存先のパスです。 ()内にカウントの制御をかけたいのですがどのような制御が考えられますでしょうか?><説明が下手ですいません、、、 If word = 0 Then Doc.SaveAs wordini & "\" & "abc" & Kanri.spdlist.Text & ".doc" Else Doc.SaveAs wordini & "\" & "abc" & Kanri.spdlist.Text & "_(2からカウントさせたい)" & ".doc" End If

  • シェルスクリプトの制御構文について

    いつもお世話になっております。 当方、RHELで bashシェルを使用しており、制御構文を用いて 『 file1.txt にある数値が file2.txt に含まれているかどうか、また、いくつ含まれているかカウント』するスクリプトを作りたいと思っております。 ファイルの中身は下記のようになっています。 [file1.txt]       [file2.txt] 10250         10064     10298         10250 11674         12866 13298         13119 28952         13201 34966         13298 37641         37641         上記の例であれば、10250,13298,37641 が共通のものなので その数 3 というものを求めたいのです。 while文やfor文を用いて繰り返し処理をするのでは、と思い調べてはみたのですが 知識が乏しく構文を書くことが出来ませんでした。 また、PerlやRuby等使わず、シェルスクリプトのみで実行したいです。 勉強不足でとても初歩的なことを伺っているとは重々承知ですが、 どなたかお力を貸していただけないでしょうか。 宜しくお願いいたします。

  • トグルボタンの排他制御でご教授ください。

    いつもお世話になっております。 エクセル2003のマクロVBAで、トグルボタンの排他制御を行っております。 ひとつのフレーム上の二つのトグルボタンの制御は、MSのサンプルソースを参考に以下のようなソースを作成して、制御できております。 教えて頂きたい内容は、同じようにひとつのフレーム上に、二つのトグルボタンを追加して、排他制御を行いたいたく検討しています、できれば、以下の ExclusiveToggleButtons() を使いたいと思っていますが、for ループのフレーム名が固定です。 フレーム名を可変にすれば、共用できるのではないかと思っていますが、なかなかうまくいきません、よい方法がありましたら、ご教授願います。 --- 標準モジュール ------------ start --- Sub ExclusiveToggleButtons() Dim my_toggle As Control ' Loop through all the ToggleButtons on Frame1. For Each my_toggle In myStartForm.my_MonthChoice_Frame.Controls ' If Name of ToggleButton matches name of ToggleButton ' that was clicked... If my_toggle.Name = my_Clicked_But Then '...select the button. my_toggle.Value = True Else '...otherwise clear the selection of the button. my_toggle.Value = False End If Next --- 標準モジュール ------------ end ---

  • whetherとif. 英文、文法について。

    whetherとif. 英文、文法について。 「文の終わりがクエスチョンマークで終わるのかどうかチェックしたい。」 I want to check whether sentences end with question marks or not. これは一度友人にメールを送った後、なぜか打ってもいない"?"が文末についていたので、今度は違うメアドから送ってまた文末に"?"が付くかつかないかをチェックしたいという意味です。 (1)私はwhetherを使いましたが、ここはifでも意味は通じますか? (2)whetherとifの使い分けを教えてください。 (3)書く文が一文ではないのでsentences endにしましたが、合っていますか? (4)「この(こっちの)メアドでチェックしたい。」と言いたい場合は、 文末に"with this address"を加えればいいですか? それとも"with using this address"でもいいですか?

  • Rubyで配列を使ったfor文の中に条件つきif文

    Rubyで配列を使ったfor文の中に条件付きのif文を入れてループさせたいのですが、基本的な構文が分かりません。 for i in array     if i == 9       array[i] << 'ア'     end end という雰囲気で書きたいのですが、どうしたらよいでしょうか。 i番目のループまで、配列のarrayを走査するにはどうすればよいでしょうか。 基礎的な質問ですみません。よろしくお願いします。

  • 条件分岐(フロー制御関数)でUPDATEを使えないみたいだけど、これに代わる処理ありませんか?

    今CGIゲームを作っています。 たとえば SELECT CASE 0 WHEN 1 THEN "one" ELSE (SELECT文) END とすれば、うまくSELECT文が実行されますが、 SELECT CASE 0 WHEN 1 THEN "one" ELSE (UPDATE文) END をするとシンタックスエラーがでます。 どうもフロー制御関数の中でUPDATE文が使えない雰囲気です。 そこで、SQL文内だけで「条件分岐でUPDATE文」、というのは無理なのでしょうか? そもそもなぜSQL文だけで完結させようかというと、それは次のような心配があるからです。 SELECT文で一度結果をPHPなどに渡して、そこで条件分岐をやって再度UPDATE文を発行する方法もあるが、そのやりとりしている間に、もしデータベースの内容が変更されると仕様的マズいのです。 もしこのような心配が必要ないのならPHPに渡してPHPで条件分岐するという手を使いたいと思っています。 技術者の方、お助けください。

    • ベストアンサー
    • MySQL