发新话题
打印

第十六课:循环控制语句之while

本主题由 robin 于 2007-11-24 16:19 移动

第十六课:循环控制语句之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;



do{ echo $i; }

while($i>0);



?>
我们照例出一道题来结束本课:你能使用while来实现打印N行表格的程序吗?
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

分成两个页面就出错

我建了两个文件,一个是.html  另一个是.php的,点提交后就出错了
显示这个:

Warning: Variable passed to each() is not an array or object in D:\test\fred.php on line 4
序号商品




还有第14课,那个会员级别,建两个文件就出错,不知道是怎么回事!!

TOP

这道题不会了

是不是用户输入几行就能打出几行??这个我不会?高手指点

TOP

each是怎么用的啊?

TOP

回复 2# 的帖子

list没加上@
Remember the day.

TOP

找了好久了,过来看看

TOP

学习学习 :23:

TOP

不错~~~学习

TOP

发新话题