我会尽量保持这个简单.我做了twp函数来测试一些东西:
//user valid
function validusr(){
return true;//or false, depends
}
//user in db
function indbusr(){
return true;//or false, depends
}
Run Code Online (Sandbox Code Playgroud)
后来,我有这个
if ( !validusr( $myval ) ) return validusr( $myval );
else if ( !indbusr( $myval ) ) return indbusr( $myval );
else return true;
Run Code Online (Sandbox Code Playgroud)
然而,这似乎并不好,因为我正在调用该函数2次:一次测试$myval,一次我返回它.但是,如果我说,存储这样的值:
$result1=validusr($myval);
$result2=indbusr($myval);
if (!$result1) return $result1;
else if ( !$result2) return $result2;
else return true;
Run Code Online (Sandbox Code Playgroud)
可能存在第二个语句永远不会运行的情况,因为第一个语句总是为真,这使得调用第二个函数无效.
那么哪一个更有效率?存储价值并冒险使用它,或者只在需要时调用该功能两次?
小智 6
你的逻辑归结为:
If the user is valid AND in the database, return true, otherwise, return false;
Run Code Online (Sandbox Code Playgroud)
您可以利用PHP的内部优化器来确定要调用的函数.使用这个:
return (validusr($myval) && indbusr($myval));
Run Code Online (Sandbox Code Playgroud)
PHP将执行第一个函数并展望表达式.如果函数返回true,它将继续执行下一个函数.如果它返回false表达式将是false下一个函数返回的任何内容,因此PHP不会打扰它并false立即返回.
类似地,PHP会在遇到序列中的值时$a || $b ||someFunction($c)通过返回来优化OR表达式().(感谢dognose突出显示!)truetrue
如果您的功能没有副作用,那就太棒了.如果你依靠你的第二个功能除了回答真/假问题之外还有一些其他的影响,这对你不起作用.
你可以看到它在这里工作- 尝试更改函数的返回值,看看运行它时会发生什么.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |