我看到很多在线代码都在while循环的布尔条件中为变量赋值:
while ($var = testfunction($param1, $param2))
{
echo "hello world!<br>";
}
问题:
在布尔条件($var = testfunction($param1, $param2))
内部发生的事件序列是什么?如果为真,则while
判断哪个值是否为真或不为真?
我的测试:
我已经进行了自己的测试。当函数完全为空并且没有返回任何内容时,循环内的代码不执行,但是当函数testfunction()
返回TRUE
时,循环内的代码将继续执行。这导致我推断出while
条件正在检查$var
内的结果值。因此,如果函数返回一个布尔值到$var
中,则该布尔值将是while
判断的条件。这也使我相信,如果$var
最终成为数字,则任何 == 0
都将等于false,而任何!= 0
都将等于true。
这些是我的推论,尽管我没有找到任何相关文档并且我的分析可能是错误的。
$var
本身?因为如果表达式是整个语句$var = testfunction(..)
,那么我会认为它应该总是评估为TRUE
(但在我执行的测试中并非如此),因为它总是成功执行而不管返回值如何。 - Webengwhile
循环正在评估$var
,其值设置为函数testfunction(...)
的返回值。因此,只要函数返回true或任何真值(如数字、字符串、数组、对象),while循环就会继续运行。换句话说,while
循环对$var
执行布尔检查:要查看在布尔模式下被评估为true/false的内容,请参考PHP文档。 - Terry