PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成endif;,endwhile;,endfor;,endforeach; 以及endswitch;。
elseif與 else if 只有在類似使用花括號的情況下才認為是完全相同。如果用冒號來定義if/elseif 條件,那就不能用兩個單詞的 else if,否則 PHP 會產生解析錯誤。
foreach 語法結構提供了遍歷數組的簡單方式。foreach 僅能夠應用於數組和對象,如果嘗試應用於其他數據類型的變量,或者未初始化的變量將發出錯誤信息。由於 foreach 依賴內部數組指針,在循環中修改其值將可能導致意外的行為。
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯時產生 E_COMPILE_ERROR 級別的錯誤。換句話說將導致腳本中止而 include 只產生警告(E_WARNING),腳本會繼續運行。 相應的有require_once,include_once。
被包含文件先按參數給出的路徑尋找,如果沒有給出目錄(只有文件名)時則按照 include_path 指定的目錄尋找。如果在 include_path 下沒找到該文件則 include 最後才在調用腳本文件所在的目錄和當前工作目錄下尋找。如果最後仍未找到文件則 include 結構會發出一條警告;這一點和 require 不同,後者會發出一個致命錯誤。
如果定義了路徑——不管是絕對路徑(在 Windows 下以盤符或者 開頭,在 Unix/Linux 下以 / 開頭)還是當前目錄的相對路徑(以 . 或者 .. 開頭)——include_path 都會被完全忽略。例如一個文件以 ../ 開頭,則解析器會在當前目錄的父目錄下尋找該文件。
當一個文件被包含時,其中所包含的代碼繼承了 include 所在行的變量范圍。從該處開始,調用文件在該行處可用的任何變量在被調用的文件中也都可用。不過所有在包含文件中定義的函數和類都具有全局作用域。
vars.php test.php
A is equal to 5 $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. . ; endfor; // foreach $arr = array(1, 2, 3, 4, 5); foreach($arr as $key => & $value): $value += 2; echo Key1: $key => Value: $value. ; endforeach; // 數組最後一個元素的 $val 引用在 foreach 循環之後仍會保留。建議使用 unset() 來將其銷毀。 unset($value); reset($arr); while (list($key, $value) = each($arr)): echo Key2: $key => Value: $value. ; 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; ?>