php的控制結構,大部分和其他主流語言,如C,Java等相同。
這裡列出一些不同的以及經常被考到的細節:
1>流程式控制制的替代文法(pascal的風格)
主要用在if,while,for,foreach 和 switch語句中。替代文法的基本形式是把左花括弧({)換成冒號(:),把右花括弧(})分別換成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。
例(1):
if ($a == 5):
/*dosomething1*/
/*dosomething1*/
endif;
就等同於:
if ($a == 5){
/*dosomething1*/
/*dosomething1*/
}
例(2):
if ($a == 5):
echo "a equals 5";
echo "...";
elseif ($a == 6):
echo "a equals 6";
echo "!!!";
else:
echo "a is neither 5 nor 6";
endif;
2>for語句(經常考,並且徹底的明白也是必要的).
格式:(支援`:`……`endfor;`代替{}的形式)
for (expr1; expr2; expr3)
statement
運行過程:
第一個運算式(expr1)在迴圈開始前無條件求值一次。
expr2 在每次迴圈開始前求值。如果值為 TRUE,則繼續迴圈,執行嵌套的迴圈語句。如果值為 FALSE,則終止迴圈。
expr3 在每次迴圈之後被求值(執行)。
等同的while語句為:
expr1;
while(expr2):
expr3;
endwhile;
3>break的不同。
break的作用是:結束當前 for,foreach,while,do-while 或者 switch 結構的執行。
同時break後面可以跟一個數字來決定跳出幾層迴圈。break 1;為跳出1層迴圈。
我不知道c裡面有沒有,因為我沒有c語言的系統的書。
4>foreach
格式:
a.foreach (array_expression as $value)
statement
b.foreach (array_expression as $key => $value)
statement
說明:
a格式遍曆給定的 array_expression 數組。每次迴圈中,當前單元的值被賦給 $value 並且數組內部的指標向前移一步(因此下一次迴圈中將會得到下一個單元)。
b格式做同樣的事,只除了當前單元的鍵名也會在每次迴圈中被賦給變數 $key。
注意:
a.當 foreach 開始執行時,數組內部的指標會自動指向第一個單元。這意味著不需要在 foreach 迴圈之前調用 reset()。/*reset(array &array):把array的內部指標移動到數組array的第一個單元並傳回值*/
b.除非數組是被引用,foreach 所操作的是指定數組的一個拷貝,而不是該數組本身。因此數組指標不會被 each() 結構改變,對返回的數組單元的修改也不會影響原數組。不過原數組的內部指標的確在處理數組的過程中向前移動了。假定 foreach 迴圈運行到結束,原數組的內部指標將指向數組的結尾。
自 PHP 5 起,可以很容易地通過在 $value 之前加上 & 來修改數組的單元。此方法將以引用賦值而不是拷貝一個值。
例:
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
c.foreach 不支援用“@”來抑制錯誤資訊的能力。
使用foreach例子:
$arr = array("one", "two", "three");
reset($arr);
while (list(, $value) = each($arr)) {
echo "Value: $value<br>\n";
}
foreach ($arr as $value) {
echo "Value: $value<br />\n";
}
5>continue的不同(我很少用continue)
作用:在迴圈結構用用來跳過本次迴圈中剩餘的代碼並在條件求值為真時開始執行下一次迴圈。
同break一樣,也接受一個數字來決定跳出幾層到迴圈代碼尾部。
註明:continue;和continue 1;一樣,都是跳到本層本次迴圈的末尾。continue 2則跳出本層迴圈到外層的末尾。
6>switch中continue的作用:類似於break(和其他語言不同)。
7>declare
結構用來設定一段代碼的執行指令。declare 的文法和其它流程式控制制結構相似:
declare (directive)
statement
directive 部分允許設定 declare 程式碼片段的行為。目前只認識一個指令:ticks(更多資訊見下面 ticks 指令)。
declare 程式碼片段中的 statement 部分將被執行