相关疑难解决方法(0)

更简洁的三元表达?

我经常发现自己需要使用以下逻辑模式编写代码:

$foo = isset($bar) ? $bar : $baz;
Run Code Online (Sandbox Code Playgroud)

我知道?:语法:

$foo = $bar ?: $baz;
Run Code Online (Sandbox Code Playgroud)

......从表面上看,它似乎正是我所寻找的; 但是,如果$bar未设置,它会抛出未定义的通知索引.它也使用了相同的逻辑empty(),这意味着这样的"空"的价值观FALSE,0,"0"等不及格.因此,它并不是真正等同的.

是否有一种更短的编写代码的方式,而没有在$bar未设置时发出通知?

编辑:

为了让我更清楚为什么我在寻找快捷语法,这里有一个更好的例子:

$name = isset($employee->getName())
      ? $employee->getName()
      : '<unknown>';
Run Code Online (Sandbox Code Playgroud)

在这种情况下,$employee可能会从第三方库中的对象,这可能是它的一个有效的方案name可能NULL.我想将变量设置$name为返回的名称(如果有的话),但如果没有,则设置一些合理的默认值.

如果方法调用比只是一个getter更复杂,那么这个例子变得更加冗长,因为我们必须缓存结果:

$bar = $some->reallyExpensiveOperation();
$foo = isset($bar) ? $bar : $baz;
Run Code Online (Sandbox Code Playgroud)

php ternary-operator

6
推荐指数
1
解决办法
186
查看次数

标签 统计

php ×1

ternary-operator ×1