條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令 PHP 條件判斷與迴圈指令 條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 條件判斷指令 程式中依據不同需求而執行不同的程式碼. if 指令格式 if … if … else … if … elseif …
if 指令格式-Type 1 if … if (條件判斷式) { 判斷式為真時要執行的指令 ; 也可以是多行指令 ; } 例: $a = 10 ; $b = 5 ; if ($a > $b ) { echo “變數a 大於 變數b “; } echo "程式結束" ;
if 指令格式-Type 2 在條件為真時要做某種處理, 若為假時也要做 某些處理時使用。 格式: if … else … 精簡格式 判斷敘述 ? 為真敘述 : 為假敘述
if 指令格式-Type 2 if … else … 範例 正規格式 精簡格式 if (preg_match("/MSIE/",$_SERVER["HTTP_USER_AGENT"])){ echo "你的瀏覽器是 IE" ; }else{ echo "你的瀏覽器不是 IE" ; } 精簡格式 $a>$b ? $c="true" : $d="false" ;
if 指令格式-Type 3 if … elseif … 結合了 else 及 if, 如果 if 的條件判斷式為假時在 else 的位置可以再做一次條件判斷。
if 指令格式-Type 3 if … elseif … 格式: if (判斷式A) { 處理A ; 判斷式A為真時要執行的指令 ; 可以是多行指令 ; } elseif (判斷式B) { 處理B ; 判斷式B為真時要執行的指令 ; 可以是多行指令 ; } else { 處理C ; 判斷式B為假時要執行的指令 ; 可以是多行指令 ; }
if 指令格式-Type 3 if … elseif … 範例: if ($bmi<18.5) $level="體重過輕"; elseif ($bmi<24) $level="正常範圍"; elseif ($bmi<27) $level="過 重"; else $level="肥 胖"; //… echo "BMI等級: $level<br/>";
switch 指令 在程式中如果只利用一個變數做為多個判斷條件的 依據。例如當變數值為 1、2 或 3 時做不同的處理。 switch 指令可以取代巢狀 if, 使寫法更加簡捷。 switch (判斷變數) { case 條件1: 敘述 ; break; case 條件2: 敘述 ; break ; ... default: 敘述 ; }
switch指令 break 指令的功能是跳離 switch 指令。當判斷變數符合某一個 case, 進入該 case 敘述執行後就應該要離開 switch 不可以再進 入其他 case 區域中, 此時利用 break 指令跳離 switch 指令。 switch 範例 switch ($a) { case 1 : echo "a=1" ; break; case 2 : echo "a=2" ; break ; case 3: echo "a=3" ; default : echo "a不是介於1到3之間" ; }
迴圈指令 for 迴圈 基本for迴圈 巢狀for迴圈 foreach迴圈 while迴圈 break, continue 指令
基本for 迴圈 使用迴圈指令來解決重複計算的問題。 已知迴圈的起始值及終止值, 或已知需要的迴圈 次數時, 我們會使用 for 指令。 { 迴圈敘述 }
基本for 迴圈 特殊的for 迴圈 基本for 迴圈範例 for ($i = 0 ; $i<=6 ; $i++){ echo "<td width=80>$Week[$i]</td> " ; } 特殊的for 迴圈 for ($i=0; $i<=10 ; $i--) for ( ; ; ) for ($i=0 ; $i<=10; $j++) 以上所有的for指令假設在迴圈敘述內不會改變 $i 的值, 那麼三個 for 迴圈都是無窮迴圈。
巢狀for迴圈 for 迴圈內還可以有 for迴圈 格式 for ($i=0; $i<=10; $i++){ echo $i; for ($j=1; $j<=9; $j++) echo $j; }
巢狀for 迴圈 Nested for loop <?php $s = array (0,15,10,20,17,3,8) ; echo "<h3>銷售量統計表</h3>" ; for ($i=1 ; $i<=6; $i++){ echo "星期 $i : " ; $s[0]+=$s[$i] ; for ($j=1 ; $j<= $s[$i]; $j++) echo "*" ; echo " $s[$i]<br/>" ; } echo "總量 : $s[0]<br/>" ; ?>
foreach迴圈 foreach, 專門使用在陣列操作, 有二種格式 分如下: foreach (array_expression as $value) foreach (array_expression as $key => $value) 與後面的陣列設定值有關 兩者的差別在「index 值是否需要」。
foreach迴圈 foreach格式-Type 1 foreach (陣列名稱 as $value){ 迴圈敘述 ; } 範例: $month = array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug', 'Sep','Oct','Nov','Dec') ; foreach ($month as $value) echo "$value <br/> " ;
foreach迴圈 foreach 格式-Type 2 foreach (陣列名稱 as $key => $value) { 迴圈敘述 ; } 除了會將陣列元素依序存入 $value 外, 也會將 陣列指標 index 同時存入 $key 中。
foreach迴圈 foreach 格式-Type 2 範例 <?php $arrMath = array( "s98210121" => 95, "s98210124" => 85, "s98210133" => 93, "s97210524" => 98, "s98210257" => 87); echo "<ul>"; foreach ($arrMath as $id => $score) echo "<li>學號: $id, 成績: $score</li>"; echo "</ul>"; ?>
while迴圈 while 指令有二個格式 差別在「先測後執行」還是「先執行後測」 故 do ... While 一定會至少「執行一次」
while迴圈 while 指令格式-Type1 while (判斷式) { 迴圈敘述 } 範例: $sum = 0; $i = 0; } 1 + 2 +…+ 14 = 105 $sum = 0; $i = 0; while ($sum<=100) { $i++; $sum += $i; } echo "1 + 2 +…+ $i = $sum";
while迴圈 while 指令格式-Type2 do { 迴圈敘述 } while (判斷式) ; 範例: $sum = 0; 1 + 2 +…+ 14 = 105 $sum = 0; $i = 0; do { $i++; $sum += $i; } while ($sum<=100); echo "1 + 2 +…+ $i = $sum";
break 指令 break指令會強迫跳離 for、while 迴圈及 switch 指令。 格式如下 break; 或 break n ;
break 指令 break 指令範例 單層(n=1) <?php $sum = 0; $i = 0; for (;;) { if ($sum >= 100) break; } echo "1 + 2 +…+ $i = $sum"; ?> 1 + 2 +…+ 14 = 105
break 指令範例 多層(n=2) 1: <html> 2: <title>Break</title> 3: <body> 4: <?php 5: echo "======= break ======= <br>\n" ; 6: for ($a=1; $a<=3; $a++) { //第一層迴圈 7: for ($b=1; $b<=10 ; $b++) { //第二層迴圈 8: echo "A = $a B=$b <br>\n" ; 9: if ($b==3) break ; 10: } 11: echo "--------------- <br>" ; 12: } 13: echo "<p>"; 14: echo "====== break 2 ====== <br>\n" ; 15: for ($a=1; $a<=3; $a++) { //第一層迴圈 16: for ($b=1; $b<=10 ; $b++) { //第二層迴圈 17: echo "A = $a B=$b <br>\n" ; 18: if ($b==3) break 2 ; 19: } 20: } 21: ?> 22: </body> 23: </html>
continue 指令 continue 指令會忽略 continue 以下的迴圈敘述回到迴 圈起始位置繼續執行迴圈。 格式 continue n ; continue 指令會忽略所在位置以下的迴圈敘述回到迴 圈起始位置繼續執行迴圈。 n 代表跳離的層數, 當 n 忽略不寫時表示 n=1
continue指令 continue 指令範例 <html> <title>Continue</title> <body> <?php $num=0 ; while ($num < 9) { $num++; echo "<br/>$num "; if (($num % 2) ==0) continue; echo "<== 是奇數"; } ?> </body> </html>