我有一个功能:
function getMilk() {
if($condition == true)
return "Milk for you, madam";
return false;
}
Run Code Online (Sandbox Code Playgroud)
例1:
if(getMilk())
echo getMilk();
Run Code Online (Sandbox Code Playgroud)
第一个例子是否使PHP运行两次牛奶?
例2:
echo getMilk(); // don't check for milk first, just get it if they have it
Run Code Online (Sandbox Code Playgroud)
如果我是PHP,我宁愿得到第二个例子.然后,我不必跑到商店检查牛奶,然后再跑一次才能得到它.
示例2会更快/更好,还是不重要?
apo*_*fos 66
是的,您正在调用该函数两次.通过执行以下操作之一,避免这样做(因为调用函数可能很昂贵):
$getMilk = getMilk();
if($getMilk) echo $getMilk;
Run Code Online (Sandbox Code Playgroud)
您可以将其减少为一行(但不可读)格式:
if ($getMilk = getMilk()) echo $getMilk;
Run Code Online (Sandbox Code Playgroud)
您还可以使用内联if三元组,其中包括:
echo getMilk()?:""; //Will echo the result of getMilk() if there is any or nothing.
Run Code Online (Sandbox Code Playgroud)
dec*_*eze 15
是的,PHP会像你告诉的那样经常调用函数.该功能将执行两次.你不应该这样做,因为你本质上不知道任何特定功能的价格是多少,和/或如果你重写函数的实现细节,将来可能会改变.特别是具有副作用的函数(它们修改某些东西,例如它们写入文件)不能经常被调用.
而是将函数结果存储在变量中:
$milk = getMilk();
if ($milk) {
echo $milk;
}
Run Code Online (Sandbox Code Playgroud)
这甚至可以内联到:
if ($milk = getMilk()) {
echo $milk;
}
Run Code Online (Sandbox Code Playgroud)
问题在于理论上比什么都重要,因为性能差异可以忽略不计.
也就是说,在你的情况下,第二种方法很好,因为false不会转化为任何类型的输出.所以
echo getMilk();
Run Code Online (Sandbox Code Playgroud)
要么回声,要么没有.
| 归档时间: |
|
| 查看次数: |
3977 次 |
| 最近记录: |