PHP while循环中没有条件?
因此,我正在使用PHP构建我的第一个超级基本CMS。我不想简单地复制我正在观看的教程中的代码,但我真的理解它。让我烦恼的一件事是使用while循环获取帖子。在下面的代码中,我看不出圆括号内的语句如何构成条件。在我看来,它所做的只是为变量$post分配一个数组。我想,我的问题是,你怎么能在非条件的东西上循环。谢谢PHP while循环中没有条件?,php,mysql,content-management-system,while-loop,conditional-statements,Php,Mysql,Content Management System,While Loop,Conditional Statements,因此,我正在使用PHP构建我的第一个超级基本CMS。我不想简单地复制我正在观看的教程中的代码,但我真的理解它。让我烦恼的一件事是使用while循环获取帖子。在下面的代码中,我看不出圆括号内的语句如何构成条件。在我看来,它所做的只是为变量$post分配一个数组。我想,我的问题是,你怎么能在非条件的东西上循环。谢谢 function get_posts () { $query = mysql_query("SELECT * FROM posts") or die(mysql_error());
function get_posts () {
$query = mysql_query("SELECT * FROM posts") or die(mysql_error());
while ($post = mysql_fetch_assoc($query)) {
echo $post['Content'];
}
}
停止
你正在看的教程已经严重过时了。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO
至于具体问题,这一行
while ($post = mysql_fetch_assoc($query)) {
这就是条件
mysql\u fetch\u assoc()
如果有更多结果,则返回一个数组;如果没有结果,则返回false
。如果返回false
,则条件将计算为false
,循环将中断。基本上,您正在获取新行并将其分配给$post
变量,其中包含:
while ($post = mysql_fetch_assoc($query))
:
返回值
返回与
获取的行,或者如果没有更多行,则为FALSE
因此,当
mysql\u fetch\u assoc
返回false
时,它被分配给$post
变量,然后在中求值,同时,然后循环停止。如手册页中关于以下内容的说明:
返回值:返回字符串的关联数组
对应于获取的行,如果没有更多行,则为FALSE
表示第一个$post获得一个值。mysql_fetch_assoc在出现错误时返回false
while循环检查$post是否为false,它可以为true、整数、数组等。它是PHP的一部分。赋值的结果就是被赋值的值。这样可以实现以下功能:
$x = $y = $z = 7;
将7
分配给所有3个变量。因此,鉴于
while($row = mysql_result(...)) {
当没有更多数据可获取时,mysql_结果将返回行数据数组或布尔值false。该数组/布尔值已分配给$row。由于这个赋值有while()环绕,数组/布尔值传播到while()
如果返回一行数据,则它是一个数组,在while之前被视为布尔true,循环将继续。如果没有更多的数据,mysql\u fetch将返回一个布尔值false,该值被分配给$row,该false也是分配的结果,这意味着while()将获得false,循环将终止。mysql\u*
函数已弃用[手动页面中的红色大框],因此应避免使用它们。
while($row = mysql_result(...)) {