是否有更短的方式来打印两个值中的哪一个?

时间:2014-03-24 19:55:32

标签: php

我目前正在使用(基本上)这种方法打印两个值中的任何一个非空,其中一个优先于另一个:

<?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中有类似的技巧可以进一步缩短或简化此代码吗?

1 个答案:

答案 0 :(得分:1)

在PHP 5.3+中,您可以使用?:运算符(manual):

  

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

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