我在网上看到很多代码都有一个函数,它可以在 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 :因此,返回并分配给
$var
的任何内容都将转换为 bool 值并由 WHILE
循环进行评估。如果分配的值为空、[]、0 等,则不会执行来自 while 循环的代码块。否则将被执行。关于php - 带有 bool 条件内的函数的 while 循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37380041/