php中带赋值运算符的while循环
我看到的代码是这样的php中带赋值运算符的while循环,php,Php,我看到的代码是这样的 while ($info=mysql_fetch_array($data_jurisdiction)) { //some stuff } 我想知道while语句的作用是什么?它内部有一个赋值运算符,因此只要$info被赋值为false以外的值,该代码就会执行?对于每个记录,将使用当前行填充$info,直到它到达结果集的末尾,然后将其设置为false(这将停止while循环).只要$info被分配了一个非false的值,该代码就会执行吗 是。如果$info为false,它会
while ($info=mysql_fetch_array($data_jurisdiction))
{
//some stuff
}
我想知道while语句的作用是什么?它内部有一个赋值运算符,因此只要$info被赋值为false以外的值,该代码就会执行?对于每个记录,
将使用当前行填充$info
,直到它到达结果集的末尾,然后将其设置为false(这将停止while循环).只要$info被分配了一个非false的值,该代码就会执行吗
是。如果$info
为false,它会循环并停止
mysql_fetch_array()代码>逐行清除,以便始终有新结果
[…S]o只要$info被分配了一个非false的值,该代码就会执行吗
没错。即使在该表达式中有赋值运算符,表达式本身仍然代表一个值。在这种情况下,整个表达式的结果等于对$info
的赋值。换句话说:表达式与$info
相同,或者表达式已分配给$info
——最后一个变体可能是最好的描述
所以现在只要$info
等于true
,就会执行while
中的代码块
请记住,这种比较是一种比较。因此,不仅false
,而且NULL
或空数组将停止内部代码块的执行。while循环将重复执行嵌套语句,只要while表达式的计算结果为true
示例中的表达式$info=mysql\u fetch\u object($data\u辖区)
检查$info
,mysql\u fetch\u object()
的赋值在键入杂耍后是否等于true
在这里理解两件事很重要:
mysql\u fetch\u object()
返回结果集的下一行,直到到达数据集的末尾,返回false。看
所有不等于0或null
的变量赋值在类型转换后计算为true
从手册中:
赋值表达式的值是指定的值。也就是说,“$a=3”的值是3
另请参阅mysql_fetch_阵列手册:
返回与获取的行相对应的字符串数组,如果没有更多行,则返回FALSE
因此,一旦不再有行,分配将变为:
$info = false
在while条件下,它将被评估为false,从而导致循环终止。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\u fetch\u array($data\u辖区)返回任何可以计算为false的内容,则赋值将不起作用。其中一些价值观是(我知道我会忘记一些):
- 0
- “0”
- 假的
- “假”
- 空的
- “”
- array()(对此不完全确定)
如果$info被指定为0,会发生什么?它是否将0等同于false,因此循环执行停止?@user481913:是,就像false
或NULL
或空数组一样。