if () else if elseif else
else if
和elseif
句法分析的含義有少許區別,但是底線是兩者會產生完全一樣的行為
while ()
do while();
for (;;)
foreach (as)
可以接受乙個可選的數字引數來決定跳出幾重迴圈
switch ()
允許使用分號代替 case 語句後的冒號
switch ($beer)
declare 結構用來設定一段**的執行指令。
目前只認識兩個指令:ticks 以及 encoding
tick(時鐘週期)是乙個在 declare **段中直譯器每執行 n 條可計時的低階語句就會發生的事件。n 的值是在 declare 中的 directive 部分用 ticks=n 來指定的
不是所有語句都可計時。通常條件表示式和引數表示式都不可計時。
tick 代表乙個事件,事件的定義是在register_tick_function,事件的執行頻率是在(ticks=n)。
用途,每執行幾條語句就觸發一次事件,比如記錄事件。這樣可以檢查declare內的php**的執行速度。可以找比較慢的部分發生的**段位置。
<?php
function doticks ()
register_tick_function('doticks');
declare(ticks = 1)
}?>
運算結果:
1
ticksticks4
ticksticks9
ticksticks16
ticksticks25
ticksticks36
ticksticks49
ticksticks64
ticksticks81
ticksticksticksticks
首先完整的for迴圈算乙個語句,但必須要等迴圈結束才算,因此在編譯時for迴圈裡面的echo 算第乙個語句。
所以第乙個doticks是在第乙個echo後執行的,也就是1輸出後才發生第乙個tick事件。 在x
從1到9
的迴圈中
,每個循
環包括兩
個語句,
乙個ec
ho,一
個for
迴圈。在
81輸出後
,因為e
cho是
一條語句
,因此輸
出第乙個
tick
s。同時
x=9的這個for迴圈也結束了,這又是一條語句,輸出第二個ticks;開始$x=10的迴圈,但這時已不滿足迴圈條件,for迴圈執行結束,這個迴圈又是乙個語句,這時輸出第三個ticks。
最後declare本身也算一條語句,所以又輸出第四個ticks。
可以用 encoding 指令來對每段指令碼指定其編碼方式
<?php
declare(encoding='iso-8859-1');
// code here
?>
require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯時產生 e_compile_error 級別的錯誤,換句話說將導致指令碼中止而 include 只產生警告(e_warning),指令碼會繼續執行。
goto 操作符可以用來跳轉到程式中的另一位置。該目標位置可以用目標名稱加上冒號來標記,而跳轉指令是 goto 之後接上目標位置的標記。
php 中的 goto 有一定限制,目標位置只能位於同乙個檔案和作用域,也就是說無法跳出乙個函式或類方法,也無法跳入到另乙個函式。也無法跳入到任何迴圈或者 switch 結構中。可以跳出迴圈或者 switch,通常的用法是用 goto 代替多層的 break。
<?php
goto a;
echo 'foo';
a:echo 'bar';
?>
PHP中的流程控制
任何php指令碼都是由一系列的語句構成的。一條語句可以是乙個賦值語句,乙個函式呼叫,乙個迴圈,乙個條件語句或者是乙個空語句。也可以使用 將一組語句封裝成乙個語句組。if exp 執行一條語句 if exp if else語句 if elseif語句 if elseif.else語句 if巢狀形式 i...
php中的流程控制
if示例1 a 3 if a 0 elseif a 0 else echo a 0 if示例2 a 3 if a 0 echo 測試結果 echo a 0 elseif a 0 不能寫成else if echo 測試結果 echo a 0 else echo 測試結果 echo a 0 endif ...
php流程控制
流程 1 if statements if expression i a 5 i b 4 if i a i b elseif i a i b else 2 邏輯運算子 i a 5 i b 4 i c 6 i d 7 if i a i b i c i d if i a i b i c i d 3 sw...