我有两个快速问题,我在Google上找不到。PHP运营商速度
此运算符的正确名称是什么?
$a = ($b > 5) ? 'High' : 'Low';
其次,有没有什么情况比任何其他运营商更受欢迎?我知道'如果其他'是一种更快的方法,并且更易于阅读和编辑。
谢谢!
我有两个快速问题,我在Google上找不到。PHP运营商速度
此运算符的正确名称是什么?
$a = ($b > 5) ? 'High' : 'Low';
其次,有没有什么情况比任何其他运营商更受欢迎?我知道'如果其他'是一种更快的方法,并且更易于阅读和编辑。
谢谢!
它被称为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快得多。
它被称为三元运算符。
它用于使代码更简单,它有时可以帮助您将两个语句合并为一个语句。
这里举一个例子。相反的:
if($Disabled) $String = 'disabled'; else $String = '';
echo '<input type="text" ' . $String . '>';
您可以使用:
echo '<input type="text" ' . $Disabled ? 'disabled' : '' . '>';
我没有简化代码上面的目的,以清楚地表明我的观点。这样你就只有一条语句,避免了额外的if/else。在某些情况下,它可能会帮助你。在其他人中,你将看不到任何好处。
第一个片段只会执行一个任务 –
我已更新示例以更清楚地显示我的观点。感谢您指出了这一点。 – Marcovecchio
我不知道更快,但至少这是客观的。更容易阅读和编辑显然不是。 – Jon