我想知道将函数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是否以某种方式保存了第一次运行函数的结果,或者它是否每次都通过函数(如果参数相同,这似乎效率低 - 在这种情况下,没有)。
如果有人想提出更好的标题或进行编辑,请继续。
答案 0 :(得分:5)
每次都经过。事先将其保存到变量中,如第二个示例所示。
答案 1 :(得分:0)
if(check() == 1 || check() == true) {
是多余的......简单的等式检查(==
)无论如何都将布尔值“true”视为1
。如果你要返回混合值(int + booleans),你应该使用严格的相等检查:
if (check() == 1 || check() === true)
^^^
在这种情况下,没有必要,但考虑一个函数可以合法地返回0
值的情况,以及一个布尔值false表示失败的情况。通过简单的相等测试,0 == false
是正确的。但是0 === false
是假的。