我在网上看到很多代码都有一个函数,它可以在 while 循环的 bool 条件中为变量赋值:
while ($var = testfunction($param1, $param2))
{
echo "hello world!<br>";
}
问题:
bool 条件 ($var = testfunction($param1, $param2))
中发生的事件顺序是什么? while
判断的是什么值是真还是假?
我自己的测试:
我已经做了自己的测试。当函数完全为空,没有返回值时,while 循环内的代码不会执行,但是当函数 testfunction()
返回 TRUE
时,while 循环内的代码循环将继续执行。这使我推断 while
条件正在检查 $var
中的结果值是什么。所以如果函数返回一个 bool 值到$var
,那么就是while
判断的条件。这也让我相信,如果 $var
最终是一个数字,那么任何 ==0
都将等同于 false,而任何 !=0
将等于 true。
这些是我的推论,尽管我没有找到它们背后的任何文件,我的分析可能是错误的。
最佳答案
正在执行整个表达式,其值已转换为 boolean .
($var = testfunction($param1, $param2))
首先,将调用testfunction(...)
,然后进行赋值。根据manual :
The value of an assignment expression is the value assigned.
因此,无论返回并分配给 $var
的任何内容,都将被转换为 bool 值并由 WHILE
循环进行评估。如果分配的值为 null、[]、0 等,则不会执行 while 循环中的代码块。否则将被执行。
关于php - 在 bool 条件内使用函数进行 While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380041/