我在网上看到了很多代码,这些代码具有在while循环的布尔条件内将值分配给变量的功能:
while ($var = testfunction($param1, $param2))
{
echo "Hello World!<br>";
}
题:
在布尔条件($var = testfunction($param1,$param2))内发生的事件的顺序是什么?如果它是真实的,那一阵子会判断什么价值呢?
我自己的测试:
我已经做了自己的测试.当函数完全为空并且什么也不返回时,while循环内的代码不会执行,但是当函数testfunction()返回TRUE时,while循环内的代码将继续执行.这使我推断出while条件正在检查$var中的结果值是什么.因此,如果该函数将布尔值返回到$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的所有内容都将转换为布尔值,并由WHILE循环进行评估.如果分配的值为null,[],0等,则将不执行while循环中的代码块.否则将被执行.