所以我有以下逻辑,如果它在数组中,则返回一个值;否则,仅返回原始值:
$trnTitle = $translateMap[$title];
if($trnTitle)
return $trnTitle;
return $title;
是否有更流畅的方式编写此内容?我只是觉得我只能写一行而不是调用该变量三次。
答案 0 :(得分:2)
自php
7开始,您可以使用Null-Coalescing运算符,如果$translateMap[$title]
为null(未填充)。
return $translateMap[$title] ?? $title;
在此处查看更多信息:
http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.coalesce
答案 1 :(得分:0)
从您的代码示例中,我不确定您要达到100%的目标。我看到了两种看待它的方法。
$title
中是否存在索引$translateMap
。如果存在,则从数组返回其值或返回索引本身: return $translateMap[$title] ?? $title;
<== http://php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op
return $translateMap[$title] ?: $title;
<== http://php.net/manual/en/control-structures.if.php#102060
警告:如果索引$title
在数组$translateMap
中不存在,则此操作将失败
解决方案2就是您示例中的
答案 2 :(得分:-2)
您可以使用空合并运算符,它看起来像??
。
对于需要将三元数与isset()结合使用的常见情况,将空合并运算符(??)添加为语法糖。如果它存在且不为NULL,则返回其第一个操作数;否则返回第一个操作数。否则,它将返回其第二个操作数。
所以只用这个:
return $translateMap[$title] ?? $title
要感谢Nigel Ren,Vody和Manual Otto的评论。