php中关于while循环的条件

写法一:
<?php
……

$rs=mysql_fetch_array($query);

while($rs){
?>
<p><?php echo $rs['content'] ?></p>
<?php } ?>
运行结果:只读取出数据库中的一条记录,并且不断重复读取这条记录。

写法二:
<?php
……

while($rs=mysql_fetch_array($query)){
?>
<p><?php echo $rs['title'] ?></p>
<?php } ?>
运行结果:取出数据库中所有的记录,没有重复。

求解:为什么这两种看似一样的写法,会造成截然不同的结果?

首先 mysql_fetch_array是将结果集中 一行 转换为数组,同时将指针移到下一行。
第一种你直接在循环外面执行后赋值给$rs,这样的话,$rs是一个固定的值:第一行数据,这样你下面的循环是个死循环,并且都是都一条数据。
第二种,你把这个方法作为while循环的条件,那么每次循环的时候它返回的都是下一行的数据,并且当到了最后一张之后循环就结束了,不会陷入死循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-29
写法一:
<?php
……

$rs=mysql_fetch_array($query);

while($rs){
?>
<p><?php echo $rs['content'] ?></p>
<?php } ?>
写法二等价:
<?php
……
$rs=mysql_fetch_array($query);
while($rs){
?>
<p><?php echo $rs['title'] ?></p>
$rs=mysql_fetch_array($query);
<?php } ?>
能看出区别吧
第2个回答  2013-09-29
写法一, $rs=mysql_fetch_array($query)只执行了一次,$rs为非空数组,While死循环

写法二,$rs=mysql_fetch_array($query)在每次While判断时执行,当所有记录行都取完后,mysql_fetch_array返回FALSE,While循环结束
第3个回答  2013-09-29
mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有
返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。你的$rs得到的是一个数组,while($rs)你判定的是rs是不是false无限循环你的while,得到的都是第一行,至于第二个为什么行我也不知道,不过你第一个用foreach试试看能不能都输出来!
第4个回答  2015-05-20

PHP :while 循环, 只要指定条件为真,则循环代码块!

示例:

<?php
$i=8;
while($i<10){
echo $i;
echo "<br/>";
$i--;
}
?>

本回答被网友采纳