我正在看的代码就是这样......
while ($info=mysql_fetch_array($data_jurisdiction))
{
//some stuff
}
我想知道这句话的内容是做什么的?它内部有一个赋值运算符,因此只要$ info被赋值为false以外的值,这个代码就会执行吗?
答案 0 :(得分:17)
[... S] o只要为$ info分配了一个非false的值,这段代码就会执行吗?
很好,是的。即使在该表达式中有赋值运算符,表达式本身仍然代表一个值。在这种情况下,整个表达式的结果等于$info
的赋值。换句话说:表达式与$info
或相同,表达式已分配给$info
- 最后一个变体可能是最佳描述。
现在只要$info
等于true
,while
内的代码块就会被执行。
请注意,比较是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的内容,则该分配将不起作用。其中一些价值观(我知道我会忘记一些:
答案 3 :(得分:0)
只要为$ info分配了一个非false的值,这个代码就会执行吗?
是强>
答案 4 :(得分:0)
如果$info
为假
mysql_fetch_array();
逐行清除,以便有新的结果
答案 5 :(得分:0)
while循环将重复执行嵌套语句,只要while表达式求值为true
即可。
示例$info = mysql_fetch_object($data_jurisdiction)
中的表达式会在类型杂耍之后检查$info
,mysql_fetch_object()
中指定的值是否等于true。
在这里理解两件事很重要:
mysql_fetch_object()
返回结果集的下一行,直到达到数据集的末尾,返回false。请参阅method documentation here。null
在类型杂耍后评估为真。答案 6 :(得分:0)
从手册:
赋值表达式的值是指定的值。也就是说,“$ a = 3”的值是3。
另请参阅有关mysql_fetch_array的手册:
返回与获取的行对应的字符串数组,如果没有其他行,则返回FALSE。
因此,一旦没有更多行,分配将变为:
$info = false
在while条件下将被评估为false,导致循环终止。