是否有更短的方法来打印存在的两个值中的任何一个



我目前正在使用(本质上)这个方法来打印两个非空值中的任何一个,其中一个比另一个具有优先级:

<?php
    $a = "high priority text that may be empty or null";
    $b = "low priority fallback that may also be empty or null";
?>
The value we want to echo is: <?=($a)?$a:$b?>.

在代码中有时会变得很长,当它看起来更像:

The value we want to echo is: <?=($_GET['the_insanely_long_name'])?$_GET['the_insanely_long_name']:$old_val['the_insanely_long_name']?>

在某些语言中,以下类型的语句可以工作,但在PHP中不行:

The value we want to echo is: <?=$_GET['the_insanely_long_name']||$old_val['the_insanely_long_name']?>

在PHP中是否有类似的技巧来进一步缩短或简化此代码?

在PHP 5.3+中,您可以使用?:操作符(手动):

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

<?= ($a) ?: $b; ?>

最新更新