3

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

如果有人想建议一个更好的标题或对其进行编辑,请继续。

4

2 回答 2

5

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

于 2012-09-10T21:05:52.210 回答
0
if(check() == 1 || check() == true) {

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

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

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

于 2012-09-10T21:47:39.850 回答