Php isset的捷径($a)$a:';其他';;

Php isset的捷径($a)$a:';其他';;,php,short,Php,Short,在PHP中有没有更简短的方法 $b = isset($a) ? $a : 'other'; 比如JS $b = $a || 'other'; 这看起来并不是一件大事,但是当您有一个很大的属性/关键点列表要检查时,这就变成了注释 提前感谢:)PHP5.3中引入了一种较短的三元语法。发件人: 由于PHP5.3,可以省略 三元运算符。表达式expr1?:如果expr1为expr3,则返回expr1 计算结果为TRUE,否则为expr3 但是,使用这种较短的语法仍然不可能(正确地)实现您想要的功能,

在PHP中有没有更简短的方法

$b = isset($a) ? $a : 'other';
比如JS

$b = $a || 'other';
这看起来并不是一件大事,但是当您有一个很大的属性/关键点列表要检查时,这就变成了注释


提前感谢:)

PHP5.3中引入了一种较短的三元语法。发件人:

由于PHP5.3,可以省略 三元运算符。表达式expr1?:如果expr1为expr3,则返回expr1 计算结果为TRUE,否则为expr3


但是,使用这种较短的语法仍然不可能(正确地)实现您想要的功能,但需要在PHP7中引入。

只有在保证存在$a的情况下才可能实现。所以在您的情况下,这是不可能的,因为您似乎不知道是否设置了$a

$b = isset($a) ? $a : 'other';
但在这种情况下:

public function foo($var)
{
    $var = $var ?: self::DEFAULT;
}

$b=@$a?:“其他”这样做会破坏代码的所有可读性:(我通常会有一个数组,我会将它与一个具有默认值的数组合并,它(1)的优点是只有一个定义默认值的点,(2)只有一个要合并的语句。(类似于
$defaults=array(“a”=>“123”,“b”=>456);$input=array(“b”=>“custom”);var_dump(array_merge($defaults,$input));
)@Dave不仅如此,使用错误抑制器是一种糟糕的编码实践。为什么这个问题看起来非常像是你也厌倦了这样做,还是你是同一个人?啊,你觉得它“令人讨厌”“,所以我想说你也是。除了他想把
$a
转换成
$b
,而不是
设置($a)
(布尔值)。