制御ステートメント
前に見た PHP コードの例では、Web ページにテキストを出力する単一のステートメントか、連続して実行される一連のステートメントがありました。他の言語でプログラムを書いたことがある場合は、実際にこれほど単純なプログラムはほとんどないことをご存知でしょう。
他のプログラミング言語と同様、PHP もスクリプトで「制御フロー」を処理する便利な方法を提供します。つまり、PHP には、実行順序に拘束されない特別なステートメントがいくつか含まれています。このような文を「制御文」といいます。分かりませんか?心配しないでください!うまく役立つ例がいくつかあります。
最も基本的で一般的に使用される制御ステートメントは、if-else ステートメントです。その構造は次のとおりです:
if ( // } else { //(オプション) } |
この制御言語を使用すると、いくつかの条件の true または false に基づいて、どのステートメントのセットを実行するかを決定するように PHP に指示できます。これが少し空っぽだと思わない場合は、作成した welcome.php ファイルを次のように変更できます:
if ( $name == "Kevin" ) { echo( "ようこそ、素晴らしいですねリーダー !" ); } else { echo( "ようこそ、$name!" ); } |
さて、このページに渡された name 変数の値が Kevin の場合、特別なメッセージが表示されます。表示されます。それ以外の場合は、入力した名前を含む単純なメッセージが表示されます。
この構造では、「else 節」 (if-else 構造の条件が false の場合に何を実行するかを示します) はオプションであることに注意してください。上の例では、適切な名前が入力されたときに特別なメッセージを表示することが目的の場合、そうでない場合は何も表示されません。このコードは次のようになります:
if ( $name == "Kevin" ) { echo( "Welcome, oh glorious leader!" ); } |
上記の条件では== は、2 つの値が等しいかどうかを比較する演算子です。ここで 2 つの等号を入力する必要があることを覚えておいてください。等号を入力すると、実際には前に説明した代入演算子を使用することになり、2 つの変数の値を比較するのではなく、新しい値を変数に代入します (この操作は偶然にも true を返します)。この結果、条件が常に true になるだけでなく、確認したい変数の値も変更され、多くの問題が発生する可能性があります。
このエラーを防ぐ安全な方法は、次のように比較に使用される変数と定数の位置を逆にすることです:
if ( "Kevin" == $name ) { |
その効果これはまったく同じですが、2 番目の等号を忘れた場合に何が起こるかを見てみましょう。 PHP は変数 ($name) の値を定数 (「Kevin」) に挿入しようとします。定数の値は変更できないため、PHP は中断して、2 番目の等号を忘れたことをすぐに知らせるエラー メッセージを表示します。
条件は、単一の等価比較よりも複雑になる場合があります。名と姓を同時に取得できる welcome.php3 を変更したことを思い出してください。特定の人に特別なメッセージを表示したい場合は、両方の変数を同時に比較できます:
if ( "Kevin" == $firstname and "Yank" == $lastname ) { echo (「ようこそ、ああ、栄光のリーダー!」 ); } |
この条件は、$firstname の値が Kevin で、$lastname の値が Yank である場合にのみ true を返します。と の意味は、両方の比較が true の場合にのみ、条件全体が true を返すということです。もう 1 つの記号は or です。これは、2 つの比較のうち少なくとも 1 つが true の場合に、条件全体が true を返します。 JavaScript と C の演算子 (&&(and) と ||(or)) に慣れている場合は、PHP でも同様に使用できます。
以下では、より複雑な比較をいくつか見ていきます。ここで必要なのは、if-else ステートメントの基本的な理解だけです。
もう 1 つの一般的に使用される PHP 制御ステートメントは while ループです。 if-else ステートメントを使用すると、条件に基づいて一連のステートメントを実行するかどうかを選択でき、while ループを使用すると、条件に基づいて一連のステートメントを繰り返す回数を決定できます。 while ループの基本的な形式は次のようになります:
while (
これは if- と非常によく似ています。 else 節との類似性のない else ステートメント。違いは、条件が true の場合、ステートメントの実行後、ターミネータ (}) の後のステートメントは実行されなくなりますが、条件が再度チェックされることです。この条件がまだ当てはまる場合。ステートメントは、条件が true でなくなるまで繰り返し実行されます。この条件が初めて false を返した場合 (何度チェックしても)、実行はループに続く (ターミネータの後) ステートメントにジャンプします。