我期待在执行此代码的PHP ...while循环与赋值运算符
while ($info=mysql_fetch_array($data_jurisdiction))
{
//some stuff
}
我不知道这是什么while语句呢?它内部有一个赋值运算符,所以只要给$ info赋予一个非false的值,这段代码就会执行?
我期待在执行此代码的PHP ...while循环与赋值运算符
while ($info=mysql_fetch_array($data_jurisdiction))
{
//some stuff
}
我不知道这是什么while语句呢?它内部有一个赋值运算符,所以只要给$ info赋予一个非false的值,这段代码就会执行?
[... S]Ø只要$信息被分配一个这个代码会执行吗?
很好,是的。即使在该表达式中有一个赋值运算符,表达式本身仍然代表一个值。在这种情况下,整个表达式的结果等于分配给$info
。换句话说:表达式与$info
或相同,该表达式已被分配给$info
- 最后的变体可能是最好的描述。
所以现在无论何时$info
等于true
,while
内的代码块都会被执行。
请记住,比较是loose comparison。所以不仅false
而且NULL
或者一个空数组将停止执行内部代码块。
+1的详细答案 –
如果$ info被赋值为0,会发生什么?它是否将0等于false并因此循环执行停止? – user481913
@ user481913:是的,就像'false'或'NULL'或空数组一样。 – hakre
对于每个记录$info
将填充当前行,直到它到达结果集的结尾时它将被设置为false(应该停止while循环)。
只要$ info获得一个非false的值,这段代码就会执行?
是的。
它循环并停止,如果$info
是假
mysql_fetch_array();
通过排排清除所以有新的结果alltimes
只要while表达式的计算结果为true
,while循环就会重复执行嵌套语句。
在你的例子$info = mysql_fetch_object($data_jurisdiction)
检查是否$info
的表达,从mysql_fetch_object()
分配的值等于真,后型杂耍。
mysql_fetch_object()
返回结果集,直到数据集的结尾的下一行到达,它返回false: 了解这里两件事情是很重要的。请参阅method documentation here。
null
在类型杂耍后评估为真。从手册:
赋值表达式的值是分配的值。即,的值“$ A = 3”是3。
另外约mysql_fetch_array该手册:
返回字符串数组对应于所提取的行,或FALSE如果有没有更多的行。
因此,一旦有没有更多的行,分配将变成:
$info = false
这将让评价在while条件的错误,导致循环终止。
从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,分配将不起作用。一些这些值是(我知道我会忘记一些:
是............ – jondavidjohn