PHP中是否有像三元运算符的短版本的PHP?

Pat*_*aba 5 php java ternary-operator

在PHP中,三元运算符有一个简短的版本.

expr1 ? expr2 : expr3;
Run Code Online (Sandbox Code Playgroud)

改变成

expr1 ? : expr3;
Run Code Online (Sandbox Code Playgroud)

short版本返回expr1的结果为true,expr3的结果为false.这允许很酷的代码可以根据自己的当前状态填充变量.例如:

$employee = $employee ? : new Employee();
Run Code Online (Sandbox Code Playgroud)

如果$employee == null由于任何其他原因或由于任何其他原因评估为false,则上面的代码将创建a new Employee();否则$employee将将值重新分配给自身.

我在Java中寻找类似的东西,但我找不到三元运算符的任何类似用例.所以我想问是否有这样的功能或类似的东西可以避免三元运算符的一个表达式,以减少重复.

Not*_*aeL 10

不,那里没有.(根据定义,三元运算需要三个操作数)

从PHP 5.3开始,可以省略三元运算符的中间部分.表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3.

资料来源:PHP手册

就像Java中的那个,但在Java中,您需要指定两个结果:

三元if-else运算符使用三个操作数生成一个值,这取决于布尔断言的真实性或错误性.它的形式如下: -

boolean-exp ? value1 : value2
Run Code Online (Sandbox Code Playgroud)

资料来源:

关于三元条件运算符的Java规范

官方Java文档

Java.net博客

还要记住,与Java和其他具有类似运算符的流行语言不同,?:它在PHP中是左联的.所以这:

<?php
$arg = "T";
$vehicle = ( ( $arg == 'B' ) ? 'bus' : 
             ( $arg == 'A' ) ? 'airplane' : 
         ( $arg == 'T' ) ? 'train' : 
         ( $arg == 'C' ) ? 'car' : 
         ( $arg == 'H' ) ? 'horse' : 
                               'feet' );
echo $vehicle;
Run Code Online (Sandbox Code Playgroud)

打印horse而不是train(这是你在Java中所期望的)

资料来源:

http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#operators