while循环在PHP与赋值运算符

时间:2011-07-13 15:06:23

标签: php

我正在看的代码就是这样......

while ($info=mysql_fetch_array($data_jurisdiction))
{
//some stuff
}

我想知道这句话的内容是做什么的?它内部有一个赋值运算符,因此只要$ info被赋值为false以外的值,这个代码就会执行吗?

7 个答案:

答案 0 :(得分:17)

  

[... S] o只要为$ info分配了一个非false的值,这段代码就会执行吗?

很好,是的。即使在该表达式中有赋值运算符,表达式本身仍然代表一个值。在这种情况下,整个表达式的结果等于$info的赋值。换句话说:表达式与$info 相同,表达式已分配给$info - 最后一个变体可能是最佳描述。

现在只要$info等于truewhile内的代码块就会被执行。

请注意,比较是loose comparison。因此,不仅false而且NULL或空数组将停止执行内部代码块。

答案 1 :(得分:4)

对于每条记录$info将填充当前行,直到它到达结果集的末尾时,它将被设置为false(应该停止while循环)。

答案 2 :(得分:3)

来自hakre的好回答。说的是

while ($info=mysql_fetch_array($data_jurisdiction))

将以与此

相同的方式执行
while (mysql_fetch_array($data_jurisdiction)==true)

甚至是

$info = mysql_fetch_array($data_jurisdiction);
if($info==true)

所以请记住,如果mysql_fetch_array($ data_jurisdiction)返回任何可以评估为false的内容,则该分配将不起作用。其中一些价值观(我知道我会忘记一些:

  • 0
  • “0”
  • “假”
  • NULL
  • “”
  • array()(不完全确定这个)

答案 3 :(得分:0)

只要为$ info分配了一个非false的值,这个代码就会执行吗?

答案 4 :(得分:0)

如果$info为假

,它会循环并停止

mysql_fetch_array();逐行清除,以便有新的结果

答案 5 :(得分:0)

while循环将重复执行嵌套语句,只要while表达式求值为true即可。

示例$info = mysql_fetch_object($data_jurisdiction)中的表达式会在类型杂耍之后检查$infomysql_fetch_object()中指定的值是否等于true。

在这里理解两件事很重要:

  1. mysql_fetch_object()返回结果集的下一行,直到达到数据集的末尾,返回false。请参阅method documentation here
  2. 所有指定的变量值不等于0,或null在类型杂耍后评估为真。

答案 6 :(得分:0)

从手册:

  

赋值表达式的值是指定的值。也就是说,“$ a = 3”的值是3。

另请参阅有关mysql_fetch_array的手册:

  

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

因此,一旦没有更多行,分配将变为:

$info = false

在while条件下将被评估为false,导致循环终止。