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
    或空数组一样。