ホームページ >バックエンド開発 >PHPチュートリアル >PHP フロー制御ステートメントの置換構文
PHP フロー制御ステートメントの代替構文
PHP では、if、while、for、foreach、switch など、フロー制御用の代替構文がいくつか提供されています。代替構文の基本形式は、左中括弧 ({) をコロン (:) に置き換え、右中括弧 (}) を endif に置き換えることです。 ;、endwhile;、endfor;、endforeach; および endswitch;。
elseif と else if は、同様の中括弧を使用している場合にのみ、まったく同じであるとみなされます。コロンを使用して if/elseif 条件を定義する場合、2 つの単語の else if を使用することはできません。使用しない場合、PHP は解析エラーを生成します。
foreach 構文構造は、配列を走査する簡単な方法を提供します。 foreach は、配列とオブジェクト にのみ適用できます。他のデータ型の変数、または初期化されていない変数に適用しようとすると、エラー メッセージが発行されます。 foreach は内部配列ポインターに依存しているため、ループ内でその値を変更すると、予期しない動作が発生する可能性があります。
foreach (array_expression as $value) statementforeach (array_expression as $key => $value) statement
requir と include は、次の点を除いてほぼ同一です。さらに、障害の処理も異なります。 require は、エラー時に E_COMPILE_ERROR レベルのエラーを生成します。つまり、スクリプトは中止され、インクルードは警告 (E_WARNING) を生成するだけで、スクリプトは実行を継続します。 対応するものは require_once、include_once です。
インクルードされたファイルは、最初にパラメータで指定されたパスに従って検索されます。ディレクトリが指定されていない場合 (ファイル名のみ)、include_path で指定されたディレクトリに従って検索されます。ファイルが include_path の下に見つからない場合、include は最終的に、呼び出し元のスクリプト ファイルが配置されているディレクトリと現在の作業ディレクトリを検索します。 include コンストラクトは、ファイルが最後に見つからない場合に警告を発行します。これは、致命的なエラーを発行する require とは異なります。
パスが定義されている場合 - 絶対パス (ドライブ文字で始まるか、Windows では、Unix/Linux では / で始まる) か、現在のディレクトリへの相対パス (. または .. で始まる) - include_path は完全に無視されます。たとえば、ファイルが ../ で始まる場合、パーサーは現在のディレクトリの親ディレクトリでファイルを検索します。
ファイルがインクルードされると、そのファイルに含まれるコードは、インクルードが配置されている行の変数スコープを継承します。その時点から、呼び出し側ファイルのその行で使用可能な変数は、呼び出されたファイルでも使用できるようになります。ただし、インクルード ファイルで定義されたすべての関数とクラスにはグローバル スコープがあります。
vars.php<?php$color = 'green';$fruit = 'apple';?>test.php<?phpecho "A $color $fruit"; // Ainclude 'vars.php';echo "A $color $fruit"; // A green apple?>
<!--HTML 内容"A is equal to 5"用替代语法嵌套在 if 语句中。该 HTML 的内容仅在 $a 等于 5 时显示--><?php if ($a == 5): ?>A is equal to 5<?php endif; ?> <?php // elseif 与 else if 只有在类似上例中使用花括号的情况下才认为是完全相同。 // 如果用冒号来定义if/elseif 条件,那就不能用两个单词的 else if,否则 PHP 会产生解析错误。 if($a > $b): echo "a is bigger than b"; echo "..."; elseif($a == $b): echo "a is equals b"; else: echo "a is smaller than b"; endif; // While - do-while(0) $i = 1; while($i < 10): echo $i++." "; endwhile; // for for ($i = 10; $i <= 11; $i++): echo $i." "."<br>"; endfor; // foreach $arr = array(1, 2, 3, 4, 5); foreach($arr as $key => & $value): $value += 2; echo "Key1: $key => Value: $value"."<br>"; endforeach; // 数组最后一个元素的 $val 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。 unset($value); reset($arr); while (list($key, $value) = each($arr)): echo "Key2: $key => Value: $value"."<br>"; endwhile; // switch - goto $i = 1; switch ($i): case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; endswitch; ?>
著作権表示: この記事はオリジナルです。ブロガー 記事をブロガーの許可なく複製することはできません。