2013-07-05 55 views
-1

我有两个快速问题,我在Google上找不到。PHP运营商速度

此运算符的正确名称是什么?

$a = ($b > 5) ? 'High' : 'Low'; 

其次,有没有什么情况比任何其他运营商更受欢迎?我知道'如果其他'是一种更快的方法,并且更易于阅读和编辑。

谢谢!

+0

我不知道更快,但至少这是客观的。更容易阅读和编辑显然不是。 – Jon

回答

3

它被称为Ternary operator

person做了一些基准,答案是,这取决于情况。从此doc

报价:

// snippet 1 
$tmp = isset($context['test']) ? $context['test'] : ''; 

// snippet 2 
if (isset($context['test'])) { 
    $tmp = $context['test']; 
} else { 
    $tmp = ''; 
} 

正确的答案是:这取决于。大多数时候,他们的速度大致相同,你不需要关心。但是如果$ context ['test']包含大量数据,snippet 2比snippet 1快得多。

+0

谢谢!这正是我所期待的。 – Tom

+0

非常欢迎你! – jh314

+0

我不认为相信您发布的博客是明智的;我自己的性能基准没有把计数放在任何地方,他的评论关于PHP的复制方法已经过时了。 [*这是在5.2.5 *上运行的性能](http://codepad.org/EToVfPH7),我在5.3.13上获得了更加相同的性能。 – Eric

0

它被称为三元运算符。

它用于使代码更简单,它有时可以帮助您将两个语句合并为一个语句。

这里举一个例子。相反的:

if($Disabled) $String = 'disabled'; else $String = ''; 
echo '<input type="text" ' . $String . '>'; 

您可以使用:

echo '<input type="text" ' . $Disabled ? 'disabled' : '' . '>'; 

我没有简化代码上面的目的,以清楚地表明我的观点。这样你就只有一条语句,避免了额外的if/else。在某些情况下,它可能会帮助你。在其他人中,你将看不到任何好处。

+0

第一个片段只会执行一个任务 –

+0

我已更新示例以更清楚地显示我的观点。感谢您指出了这一点。 – Marcovecchio