繁体   English   中英

在循环中PHP没有条件?

[英]No condition in PHP while loop?

所以,我正在使用PHP构建我的第一个超级基本CMS。 我不想简单地复制我正在观看的教程中的代码,但我真的很了解它。 困扰我的一件事是使用while循环来获取帖子。 在下面的代码中,我无法看到圆括号内的语句如何构成条件。 在我看来它所做的就是为变量$ post分配一个数组。 我想,你怎么能循环不是条件的东西是我的问题。 谢谢!

function get_posts () {
   $query = mysql_query("SELECT * FROM posts") or die(mysql_error());

   while ($post = mysql_fetch_assoc($query)) {
      echo $post['Content'];
   }
}

停!

您正在观看的教程严重过时! 请不要在新代码中使用mysql_*函数 它们不再被维护,并且已经开始弃用 看到红色的盒子 了解准备好的语句 ,并使用PDOMySQLi - 本文将帮助您确定哪些。 如果您选择PDO, 这是一个很好的教程


至于具体问题,这一行

while ($post = mysql_fetch_assoc($query)) {

是条件。 如果有更多结果, mysql_fetch_assoc()返回一个数组,如果没有结果,则返回false 如果它返回false ,则条件将评估为false并且循环将中断。

基本上你要获取新行并将其分配给$post变量:

while ($post = mysql_fetch_assoc($query))

mysql_fetch_assoc

返回值

返回与获取的行对应的字符串关联数组,如果没有其他行,则返回FALSE

因此,当mysql_fetch_assoc返回false它被分配给$post变量,然后在while内进行评估,然后循环停止。

正如mysql_fetch_assoc手册页中所述:

返回值:返回与获取的行对应的字符串关联数组,如果没有其他行,则返回FALSE。

while ($post = mysql_fetch_assoc($query))

意味着第一个$ post获得一个值。 当出现错误时,mysql_fetch_assoc返回false。

while循环检查$ post是否为false,可以为true,整数,数组等。

它是PHP的一部分。 赋值的结果是赋值。 这允许这样的事情:

$x = $y = $z = 7;

它为所有3个变量分配7 因此,给定

while($row = mysql_result(...)) {

当没有更多要提取的数据时,mysql_result将返回行数据数组或布尔值false。 该数组/布尔值分配给$ row。 由于这个赋值包含while(),所以array / boolean传播到while()。

如果你得到一行数据,那么这是一个被while处理为布尔值的数组,并且循环继续。 如果没有更多数据,mysql_fetch返回一个布尔值false,它被赋值给$ row,而false也是赋值的结果,这意味着while()得到一个FALSE,并且循环终止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM