Php 使用布尔函数返回还是将返回设置为变量?

Php 使用布尔函数返回还是将返回设置为变量?,php,Php,我想知道将函数的return设置为变量是否更有效,因为如果要在参数中使用它,它们不需要再次遍历函数吗 例如: function check() { foreach() { // insert long foreach loop here return true; } } if(check() == 1 || check() === true) { // had to go through the function twice? } $c

我想知道将函数的
return
设置为变量是否更有效,因为如果要在参数中使用它,它们不需要再次遍历函数吗

例如:

function check() {
    foreach() {
        // insert long foreach loop here
        return true;
    }
}

if(check() == 1 || check() === true) {
    // had to go through the function twice?
}

$check = check();
if($check == 1 || $check === true) {
    // only has to go through the function once
}
我想知道PHP是否以某种方式保存了第一次运行函数的结果,还是每次都会运行函数(如果参数相同,则效率似乎很低,在本例中,没有)


如果有人想推荐一个更好的标题或编辑它,那就去吧。

每次都会通过。事先将其保存到变量中,如第二个示例所示

if(check() == 1 || check() == true) {
是多余的。。。简单的相等性检查(
=
)将布尔值“true”视为
1
。如果要返回混合值(int+booleans),则应使用严格的相等性检查:

if (check() == 1 || check() === true)
                            ^^^

在这种情况下,这是不必要的,但是考虑一个函数可以合法地返回<代码> 0 <代码>值以及布尔错误来指示失败的情况。通过简单的相等性测试,

0==false
为真。但是
0===false
为false。

它将再次执行该函数(除非您有缓存)。如果您希望将函数的结果设置为在范围内的多个位置使用,则最好将其分配给一个变量-基于您已经突出显示的原因。谢谢大家!我正在探索php的内部工作原理!谢谢我很惊讶在第一次运行时没有保存值,我认为php会更有效,这取决于程序员:)php没有优化这一点的原因是该方法可能会有副作用。缓存方法调用的结果可能会中断程序。检测副作用是可能的,但很困难。