使用布尔函数返回或设置返回变量?

时间:2012-09-10 21:03:50

标签: php

我想知道将函数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是否以某种方式保存了第一次运行函数的结果,或者它是否每次都通过函数(如果参数相同,这似乎效率低 - 在这种情况下,没有)。

如果有人想提出更好的标题或进行编辑,请继续。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

是多余的......简单的等式检查(==)无论如何都将布尔值“true”视为1。如果你要返回混合值(int + booleans),你应该使用严格的相等检查:

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

在这种情况下,没有必要,但考虑一个函数可以合法地返回0值的情况,以及一个布尔值false表示失败的情况。通过简单的相等测试,0 == false是正确的。但是0 === false是假的。