第十六課:循環控制語句之while

第十六課:循環控制語句之while



  說到 PHP中的循環控制你一定會想到我們前幾天課程裏講到的for語句吧。是的,那個for真是太有趣了,我只用幾行代碼就能讓它打印一個30行的表格,我把那個30簡單的改成100,它就會乖乖的打印一個100行的表格。現在,我們的網上商城裏有許多商品供客戶挑選,當客戶把所選中的商品提交後,我們要用表格一目瞭然的把他選擇的商品呈現在他面前。你準備讓你的程序打印一個多少行的表格呢?不知道吧?傻眼了吧?因爲你根本就不知道客戶選中了多少件商品,所以也不知道讓你的 for循環多少次。

  那麼有沒有一種方法,讓程序自己確定要循環的次數呢?有,這個循環控制語句就是while。看下面的一個例子16-1:
<?php
 
echo '<table border=1 width=300>';
echo  "<tr><td width=30%>序號</td><td width=70%>商品</td></tr>";
 
while( @list($key,$sp= each($_POST['C'] ) ){
        
  
$num = $key+1;
  
  
echo  "<tr><td>$num</td><td>$sp</td></tr>";
  
}
 
echo '</table>';
 
?>
 
<form method="POST" action="#">
  
<p>商品:
          
<input type="checkbox" name="C[]" value="MP3">MP3 
          
<input type="checkbox" name="C[]" value="PDA">PDA 
          
<input type="checkbox" name="C[]" value="VCD">VCD 
          
<input type="checkbox" name="C[]" value="MP4">MP4 
          
<input type="checkbox" name="C[]" value="DVD">DVD 
          
<input type="checkbox" name="C[]" value="手機">手機 
          
<input type="checkbox" name="C[]" value="相機">音樂 
          
<input type="checkbox" name="C[]" value="DV">DV 
          
<input type="checkbox" name="C[]" value="圖書">圖書</p>
  
<p><input type="submit" value="提交" name="B1"><input type="reset" value="全部重寫" name="B2"></p>
</form>
上面這段代碼無論你選擇多少商品,它都會正確的打印表格。那麼 while語句怎麼使用呢?

while語法:

while ( expr ) statement

  while 語句的含義是十分簡單的,它告訴PHP在while表達式爲的情況下反覆執行嵌套的語句,直到表達式的值爲循環結束。表達式在每一次循環開始的時候檢查,如果表達式在一開始就爲,那麼循環一次也不會執行。

  下面看一個用 while語句實現階乘的例子16-2:
<html>
<body>
<form action="" method="post">
請輸入階乘的階數:
<input type=text name=steps value=1><input type=submit value=提交>
</form>
<br>
<font size=4>階乘是:</font>
 
<?php
 
$sum = 1;
$i = 1;
 
while ( $i <= @$_POST['steps'] ){
 
  
$sum *= $i;
 
  
$i++;
 
}
 
echo $sum;
echo '<p>';
 
?>
</body>
</html>
這個例子中,每次循環開始時都檢查 $i <= @$_POST['steps'] 的值是否爲真(TRUE)則執行嵌套語句,假(FALSE)則結束循環。

  例子16-1可能讓你有些糊塗吧,有幾個地方要給你解釋下:在表單中,所有商品的name屬性值都是"C",在C後面加上中括號([ ])後,表單提交時,PHP會把這些數據都轉化爲一個鍵名爲“C”的$_POST數組,$_POST['C'][0]是第一個數據,$_POST['C'][1]是第二個數據,$_POST['C'][2]是第三個數據。。。list($key,$sp) = each($_POST['C'])結構表示把數組$_POST['C']裏當前的鍵值和數據賦值給$key和$sp,然後數組指針下移,直到數組裏不在有數據。當然,這個例子最簡單的還是使用foreach語句,while與數據庫查詢語句結合使用要多些,但相關知識我們還未學習到,暫且把這個實例用whille實現,讓大家學習一下它的用法。

  while 語句主要用在那些循環次數不明確的循環控制。

do...while...語句:

do { statement }
while( expr )

  do...while語句是先執行一次循環模塊,然後再進行條件判斷,無論判斷條件是否滿足,循環都會被執行一次。例如16-3:
<?php
 
$i=0;
 
doecho $i; }
while($i>0);
 
?>
我們照例出一道題來結束本課:你能使用while來實現打印N行表格的程序嗎?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章