上一篇文章對PHP的一些類型和運算符進行了簡單的講解。PHP入門之類型與運算符
這篇簡單講解一下流程控制。結尾有實例,實例內容是用switch分支和for循環分別作一個計算器和金字塔。php
單分支控制
if語句 語法以下:
if(表達式){
語句1;
語句2;
...
}html
雙分支控制
if else語句。語法以下
if(表達式){
語句1;
語句2;
...
}else{
語句1;
語句2;
...
}
若是表達式爲真,那麼執行{}裏面得。若是爲假,直接執行else{}裏面得語句。web
舉個例子:post
$age=19; if ($age>18){ echo '你已經成年啦'; #由於$age=19 大於18,因此表達式爲真,因此輸出後面得。因此輸出「你已經成年啦」 }else{ echo '小可愛,你還未成年!'; }
多分支控制
語法:
if(){
語句1;
...
}else if(){
語句1;
...
}else{
語句1;
...
}
這裏得else if(){}能夠加不少個。設計
舉個例子,好比:3d
$age=3; if ($age>18){ echo '你已經成年啦'; }elseif($age>10 && $age<18){ echo '是少年啦'; }elseif($age>5 && $age<10){ echo '你仍是個孩子'; }else{ echo '是嬰兒啦'; }
多分支還有switch語句。語法以下。
switch(表達式){
case常量1:
break;
case常量2:
break;
case常量3:
break;
case常量4:
break;
...
}
舉個例子:code
$a=1; switch ($a){ case 1: echo '今天星期1'; break; case 2: echo '今天星期2'; break; case 3: echo '今天星期3'; break; //這裏能夠寫不少個 default: echo '輸入有誤'; }
這裏須要注意得是,case語句得break不能夠省略,不然沒法跳出switch語句,繼續向下執行,直到遇到break。還有一點須要注意得是,default語句放在哪裏沒影響,程序執行順序是,先查找case語句,case語句沒有符合得,在尋找default語句。
區分一下,何時用if語句,何時用switch語句。
當控制得是一個範圍時,通常用if語句,當控制得是每一個點時,用switch語句。orm
for循環控制。
語法爲for(循環初值;循環得條件;步長){
語句.....
}
舉個例子:
for ($age=0;$age<20;$age++){
echo '
這是一個循環';
}
直到循環條件語句爲假而後跳出循環。
while循環
循環格式爲:
while(循環控制){
循環語句;
}
舉個例子:htm
$a=0; while ($a<10){ echo '<br/>這是while循環'.$a; $a++; } #循環語句中必定要有控制語句,在這裏是$a++,若是不加,0永遠小於10,這個一個死循環。
do while循環
循環格式爲:
do{
循環語句
}while(循環控制);
舉個例子:blog
$i=0; do{ echo '<br/>這是一個do while循環'.$i; $i++; }while($i<10); 這裏也同樣,若是不加$i++控制,也會成爲死循環。
下面用一個具體的實例,鞏固循環流程控制。
先完成頁面的設計,代碼以下。
<html> <head> <title>這是一個計算器</title> </head> <body > #因爲是本地,因此將表單提交到okok.php。 <form action="okok.php" method="post"> <table> <tr><td>請輸入</td><td><input type="text" name="sum1"></td></tr><br/> <tr><td>請在輸入</td><td><input type="text" name="sum2"></td></tr> <tr><td>點擊計算</td><td><input type="submit"></td></tr> </table> <select name="oper" > <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> </form> </body> </html>
顯示到頁面的內容以下
接下來在okok.php中用switch分支進行核心運算。代碼以下:
<?php $sum1=$_POST['sum1']; $sum2=$_POST['sum2']; $oper=$_POST['oper']; $res=0; switch ($oper){ case "+": $res=$sum1+$sum2; break; case "-": $res=$sum1-$sum2; break; case "*": $res=$sum1*$sum2; break; case "/": $res=$sum1/$sum2; break; default: echo '運算符不合法'; } echo '運算結果爲:'.$res.'<br/>'; ?> <a href="mycal.php">返回初頁面</a>
如今來運算一下,輸入123+456,查看返回結果。
<?php #第一層for循環控制金字塔的層數 for ($i=1;$i<=5;$i++){ #控制"*"號 for ($j=1;$j<=$i;$j++){ echo '*'; } echo '<br/>'; } ?>
顯示效果如圖
咱們發現只是打印了一半的金字塔,如何補全呢?若是咱們再控制一下前面每一行的空格和每行的*號是否是就能夠了?咱們來認證一下。將上面的代碼補全。以下:
<?php #第一層for循環控制金字塔的層數 for ($i=1;$i<=5;$i++){ #控制空格 for ($k=1;$k<=5-$i;$k++){ echo ' '; } #控制"*"號 for ($j=1;$j<=2*$i-1;$j++){ echo '*'; } echo '<br/>'; } ?>
咱們再進階一下,若是將這個金字塔內部掏空,又該如何實現呢?咱們想一下,是否是咱們要只要控制好兩個邊緣的"*"號,其餘地方控制填充空格就能夠了,有了思路,咱們看代碼,又補充了哪些地方。看代碼:
<?php #第一層for循環控制金字塔的層數 for ($i=1;$i<=5;$i++){ #控制空格 for ($k=1;$k<=5-$i;$k++){ echo ' '; } #控制"*"號 for ($j=1;$j<=2*$i-1;$j++){ if ($j==1 || $j==2*$i-1){ echo '*'; }else{ #填充空格 echo ' '; } } echo '<br/>'; } ?>
效果以下圖
我們再進階一下,若是將這個空心的三角翻轉一下,打印出菱形,那麼又該如何實現呢?是否是再原來的基礎上再控制一下層數、"*"號、空格就能夠完成呢。如今我們看代碼。
<?php #第一層for循環控制金字塔的層數 for ($i=1;$i<=5;$i++) { #控制空格 for ($k = 1; $k <= 5 - $i; $k++) { echo ' '; } #控制"*"號 for ($j = 1; $j <= 2 * $i - 1; $j++) { if ($j == 1 || $j == 2 * $i - 1) { echo '*'; } else { #填充空格 echo ' '; } } echo '<br/>'; } #翻轉 for ($i=5;$i>=0;$i--){ #控制空格 for ($k=0;$k<=5-$i;$k++){ echo ' '; } #控制*和空格 for ($j=1;$j<=2*$i-3;$j++){ if ($j==1 || $j==2*$i-3){ echo '*'; }else{ echo ' '; } } echo '<br/>'; } ?>
效果以下
簡單的說了一下流程控制,但願對你們有幫助。