我在网上看到很多代码都有一个函数,它可以在 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/

10-16 13:34