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没有优化这一点的原因是该方法可能会有副作用。缓存方法调用的结果可能会中断程序。检测副作用是可能的,但很困难。