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;
?>
