Imr*_*ran 53 php language-agnostic coding-style ternary-operator
如果它很短,我会保持单线.最近我一直在使用这种风格用于更长或嵌套的三元运算符表达式.一个人为的例子:
$value = ( $a == $b )
? 'true value # 1'
: ( $a == $c )
? 'true value # 2'
: 'false value';
Run Code Online (Sandbox Code Playgroud)
个人你使用哪种风格,或找到最可读的?
编辑:( 何时使用三元运算符)
我通常避免使用超过2级深度三元运算符.当我在PHP模板脚本中回显变量时,我倾向于更喜欢2级深度三元运算符而不是2级.
Sim*_*ard 87
通常要避免使用三元运算符,但这种形式可以很容易阅读:
result = (foo == bar) ? result1 :
(foo == baz) ? result2 :
(foo == qux) ? result3 :
(foo == quux) ? result4 :
fail_result;
Run Code Online (Sandbox Code Playgroud)
通过这种方式,条件和结果在同一条线上保持在一起,并且很容易撇下并了解正在发生的事情.
Tom*_*lak 77
我尽量不使用三元运算符来编写嵌套条件.它无视可读性,并且在使用条件时没有提供额外的价值.
只有它可以放在一条线上,并且它的结晶清晰意味着什么,我用它:
$value = ($a < 0) ? 'minus' : 'plus';
Run Code Online (Sandbox Code Playgroud)
bio*_*inc 24
就个人而言,我只使用三元运算符,如果它适合一行.如果它需要跨越,那么现在是时候了
if else if else
Run Code Online (Sandbox Code Playgroud)
nic*_*ckf 16
我有时会使用的一种风格,因为它没有被提及,我提出的是这样的:
$result = ($x == y)
? "foo"
: "bar";
Run Code Online (Sandbox Code Playgroud)
..但通常只有将它全部放在一条线上才能使它太长.我发现= ? :全部排队使它看起来更整洁.
Chr*_*cob 15
PHP嵌套三元运算符的行为不同.
此语法通过以下所有测试.基于http://deadlytechnology.com/web-development-tips/php-ternary-syntax/
$myvar = ($x == $y)
?(($x == $z)?'both':'foo')
:(($x == $z)?'bar':'none');
Run Code Online (Sandbox Code Playgroud)
.
示例#3"非显而易见的三元行为"解释了为什么以下在PHP中不起作用.
$x = 1;
$y = 2;
$z = 3;
$myvar = ($x == $y)
? "foo"
: ($x == $z)
? "bar"
: "none";
$myvar == 'none'; // Good
$x = 1;
$y = 2;
$z = 1;
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";
$myvar == 'bar'; // Good
$x = 1;
$y = 1;
$z = 3;
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";
$myvar == 'bar'; // Bad!
$x = 1;
$y = 1;
$z = 1;
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";
$myvar == 'bar'; // Bad!
Run Code Online (Sandbox Code Playgroud)