isset($a) 的捷径? $a : '其他'; [复制]

Posted

技术标签:

【中文标题】isset($a) 的捷径? $a : \'其他\'; [复制]【英文标题】:Short way for isset($a) ? $a : 'other'; [duplicate]isset($a) 的捷径? $a : '其他'; [复制] 【发布时间】:2014-10-21 14:23:42 【问题描述】:

php 中有没有更短的方法?

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

像在 JS 中一样

$b = $a || 'other';

这看起来并不是一件大事,但是当您要检查大量属性/键时,这会变得很烦人。

提前致谢:)

【问题讨论】:

$b = @$a ?: 'other'; 这样做确实会破坏代码的所有可读性:( 我通常会有一个数组,我将它与一个具有默认值的数组合并,它 (1) 的优点是只有 1 个点定义了默认值,并且 (2) 只有 1 个语句合并。 (类似于$defaults = array("a"=> "123","b" => 456); $input = array("b"=>"custom"); var_dump(array_merge($defaults,$input)); @Dave 不仅如此,使用错误抑制器也是一种糟糕的编码习惯。 为什么这个问题看起来很像***.com/q/26477475 你是不是也厌倦了这样做,还是你是同一个人?啊,你觉得它“烦人”,所以我会说你是一样的。 【参考方案1】:

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

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

但在这种情况下:

public function foo($var)

    $var = $var ?: self::DEFAULT;

【讨论】:

【参考方案2】:

在 PHP 5.3 中引入了更短的三元语法。来自the documentation:

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

但是,使用这种较短的语法仍然无法(正确地)实现您想要的,但需要在 PHP 7 中引入 coalesce operator。

【讨论】:

除了他想将$a 转换成$b,而不是isset($a)(布尔值)。

以上是关于isset($a) 的捷径? $a : '其他'; [复制]的主要内容,如果未能解决你的问题,请参考以下文章

不走弯路,就是捷径

G. isset($a),unset($a),empty($a)的区别

[单选题]isset()的功能是( )

Unity4.2 提升开发效率的捷径--导入Unity自带的资源包

php isset — 检测变量是否设置

编程,到底有没有捷径可以走