2011-07-13 62 views
9

我期待在执行此代码的PHP ...while循环与赋值运算符

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

我不知道这是什么while语句呢?它内部有一个赋值运算符,所以只要给$ info赋予一个非false的值,这段代码就会执行?

+4

是............ – jondavidjohn

回答

13

[... S]Ø只要$信息被分配一个这个代码会执行吗?

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

所以现在无论何时$info等于truewhile内的代码块都会被执行。

请记住,比较是loose comparison。所以不仅false而且NULL或者一个空数组将停止执行内部代码块。

+0

+1的详细答案 –

+0

如果$ info被赋值为0,会发生什么?它是否将0等于false并因此循环执行停止? – user481913

+0

@ user481913:是的,就像'false'或'NULL'或空数组一样。 – hakre

4

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

0

只要$ info获得一个非false的值,这段代码就会执行?

是的。

0

它循环并停止,如果$info是假

mysql_fetch_array();通过排排清除所以有新的结果alltimes

0

只要while表达式的计算结果为true,while循环就会重复执行嵌套语句。

在你的例子$info = mysql_fetch_object($data_jurisdiction)检查是否$info的表达,从mysql_fetch_object()分配的值等于真,后型杂耍

  1. mysql_fetch_object()返回结果集,直到数据集的结尾的下一行到达,它返回false:

    了解这里两件事情是很重要的。请参阅method documentation here

  2. 所有分配的值不等于0的变量或null在类型杂耍后评估为真。
0

从手册:

赋值表达式的值是分配的值。即,的值“$ A = 3”是3。

另外约mysql_fetch_array该手册:

返回字符串数组对应于所提取的行,或FALSE如果有没有更多的行。

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

$info = false 

这将让评价在while条件的错误,导致循环终止。

2

从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”
  • “假”
  • NULL
  • “”
  • array()(不完全确定这个)