任何 PHP 腳本都是由一系列語句構成的。一條語句可以是一個賦值語句,一個函數調用,一個循環,一個條件語句或者甚至是一個什麼也不做的語句(空語句)。語句通常以分號結束。此外,還可以用花括號將一組語句封裝成一個語句組。語句組本身可以當作是一行語句。本文將詳細介紹各種語句類型
if 結構是很多語言包括PHP在內最重要的特性之一,它允許按照條件執行代碼片段
if (條件) { 當條件為 true 時執行的代碼; } if (條件) { 條件為 true 時執行的代碼; } else { 條件為 false 時執行的代碼; } if (條件) { 條件為 true 時執行的代碼; } elseif (條件) { 條件為 true 時執行的代碼; } else { 條件為 false 時執行的代碼; }
<?php $t=date("H"); if ($t<"10") { echo "Have a good morning!"; } elseif ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } ?>
switch語句類似於具有同一個表達式的一系列 if 語句。很多場合下需要把同一個變量(或表達式)與很多不同的值比較,並根據它等於哪個值來執行不同的代碼。這正是 switch 語句的用途
[注意]switch/case做的是松散比較
switch (expression) { case label1: code to be executed if expression = label1; break; case label2: code to be executed if expression = label2; break; default: code to be executed if expression is different from both label1 and label2; }
<?php switch ($x) { case 1: echo "Number 1"; break; case 2: echo "Number 2"; break; case 3: echo "Number 3"; break; default: echo "No number between 1 and 3"; } ?>
while 循環是 PHP 中最簡單的循環類型。while語句的含意很簡單,它告訴 PHP 只要 while 表達式的值為 TRUE 就重復執行嵌套中的循環語句。表達式的值在每次開始循環時檢查,所以即使這個值在循環語句中改變了,語句也不會停止執行,直到本次循環結束。有時候如果 while 表達式的值一開始就是 FALSE,則循環語句一次都不會執行
while (expr) statement
<?php $i = 1; while ($i <= 10) { echo $i++; } $i = 1; while ($i <= 10): print $i; $i++; endwhile; ?>
do-while 循環和 while 循環非常相似,區別在於表達式的值是在每次循環結束時檢查而不是開始時。和一般的 while 循環主要的區別是 do-while 的循環語句保證會執行一次(表達式的真值在每次循環結束後檢查)
do { 要執行的代碼; } while (條件為真);
<?php $i = 0; do { echo $i; } while ($i > 0); ?>
for 循環是 PHP 中最復雜的循環結構。for循環語句中,初始化在循環開始前無條件求值一次,循環條件在每次循環開始前求值。如果值為true,則繼續循環,執行循環體語句;如果值為false,則終止循環。遞增語句在每次循環後執行
for (init counter; test counter; increment counter) { code to be executed; }
<?php for ($x=0; $x<=10; $x++) { echo "數字是:$x <br>"; } ?>
foreach語法結構提供了遍歷數組的簡單方式。foreach 僅能夠應用於數組和對象,如果嘗試應用於其他數據類型的變量,或者未初始化的變量將發出錯誤信息
每進行一次循環迭代,當前數組元素的值就會被賦值給$value變量,並且數組指針會逐一移動,直到到達最後一個數組元素。一般有兩種方式:不取下標、取下標
【1】只取值,不取下標
foreach ($array as $value) { code to be executed; } <?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>"; } ?>
【2】同時取下標和值
foreach ($array as $index => $value) { code to be executed; }
<?php $colors = array( "r"=>"red", "g"=>"green", "b"=>"blue", "y"=>"yellow"); /* r:red g:green b:blue y:yellow */ foreach ($colors as $key => $value) { echo $key.":".$value."<br>"; } ?>
break 結束當前 for,foreach,while,do-while 或者 switch 結構的執行
break 可以接受一個可選的數字參數來決定跳出幾重循環
$i = 0; while (++$i) { switch ($i) { case 5: echo "At 5<br />\n"; break 1; /* 只退出 switch. */ case 10: echo "At 10; quitting<br />\n"; break 2; /* 退出 switch 和 while 循環 */ default: break; } }
continue 在循環結構用用來跳過本次循環中剩余的代碼並在條件求值為真時開始執行下一次循環
continue 接受一個可選的數字參數來決定跳過幾重循環到循環結尾。默認值是 1,即跳到當前循環末尾
$i = 0; while ($i++ < 5) { echo "Outer<br />\n"; while (1) { echo "Middle<br />\n"; while (1) { echo "Inner<br />\n"; continue 3; } echo "This never gets output.<br />\n"; } echo "Neither does this.<br />\n"; }
goto 操作符可以用來跳轉到程序中的另一位置。該目標位置可以用目標名稱加上冒號來標記,而跳轉指令是 goto 之後接上目標位置的標記。PHP 中的 goto 有一定限制,目標位置只能位於同一個文件和作用域,也就是說無法跳出一個函數或類方法,也無法跳入到另一個函數。也無法跳入到任何循環或者 switch 結構中。可以跳出循環或者 switch,通常的用法是用 goto 代替多層的 break
<?php goto a; echo 'Foo'; a: //'Bar' echo 'Bar'; ?>