三元运算符和php中的条件之间是否存在差异?
如果是,请提供。
答案 0 :(得分:10)
三元运算符是运算符,因此它形成一个表达式。因此,它将具有一个值,您可以将其分配给变量或使用您想要的值。它用于简单的情况,其中变量可以根据条件采用两个可能的值。
例如:$status = $age > 18 ? 'adult' : 'child';
尽管可能,you should not nest the ternary operator。
控制结构 if
完全不同。他们唯一的共同点就是评估一个条件(真/假)。 if
用于根据该条件的结果执行代码片段。您会发现自己大部分时间都在使用if
(实际上,您可以在没有三元的情况下生活)。在某些情况下,如果用三元组替换某些类型的if
s,代码更少,更具可读性,如下所示:
if ($age > 18) {
$status = 'adult';
} else {
$status = 'child';
}
答案 1 :(得分:1)
就个人而言,我只使用三元运算符,如果它适合一行。如果它需要跨越,那么现在是时候了好的
$value = ($a < 0) ? 'minus' : 'plus';
你也可以看到一个有趣的问题:多个三元如何工作:
答案 2 :(得分:1)
如果陈述比三元更快,但在大多数情况下并不重要。
Here是关于If语句与三元表现的帖子。 简介:除非您正在评估大型对象,否则它基本相同,因为三元复制正在评估的对象。这是使用PHP 5.3我不确定它是否在当前版本中被更改。
答案 3 :(得分:0)
三元运算符可以执行if / else语句可以执行的任何操作。在某些情况下,它可以提供简洁和表达,但要注意:它很容易被滥用。
我喜欢它的一件事是检查null:
$foo = (is_null($bar)) ? 0 : $bar->someNumber();
如果我的PHP内存正确地为我服务,那么它也可以在左值上使用:
((is_null($foo)) ? $bar : $foo) = $quux;
虽然很容易过度,例如在这个C ++示例中,它用于代替循环和if / else语句:
while( ( ! printingStars) ?
( ( ! reachedMax) ?
( ( ++numberOfStars == n - 1) && (reachedMax = 1) )
: --numberOfStars ), printingStars = 1, starsLeft = numberOfStars
: ( ( ! starsLeft ) ?
printingStars = 0, (std::cout<< std::endl), 1
: --starsLeft, (std::cout<< "*"), 1 ) );
谨慎使用。
答案 4 :(得分:0)
也许另一种观点:表现。
前段时间我注意到三元运算符比if()更快。我不知道这是否仍然适用于最新版本的PHP。
&LT;狂野猜测&gt;
原因可能是if()允许更灵活,例如使用代码块({ }
)。三元运算符基本上只是测试表达式并根据测试结果获取值。
回到我的Assembler-days,我会说if()必须跳入内存,因此需要花费更多时间来做事。
&LT; / wild guess&gt;
但是,只有在代码执行了相当数量(1k +)的情况下,这才会变得明显。
答案 5 :(得分:-1)
如果你不使用任何简单的逻辑,那么维护就会有很大的不同。
如果您遇到一个困难的问题,那么在需要更多时间的情况下,您需要进行编程,就好像您的代码中有“if ... then”一样。并且确定:它发生了!
时间不是三元运营商的朋友。如果岁月不见了,写得快,但不能快速理解!