PHP如何省略三元表达式false分支实现条件输出?
PHP省略三元表达式false分支的实现方法
PHP本身不支持你提到的echo $foo ? 'bar';这种直接省略false分支的三元语法,但有多种等价的简化写法可以实现相同需求:
- 逻辑短路写法(最符合省略else分支的需求)
利用逻辑与&&的短路执行特性,条件为真时才会执行后面的输出语句,写法如下:
注意这里要使用$foo && print 'bar';print而非echo:print是有返回值的语言结构,可以参与逻辑运算,echo没有返回值,无法用于这种写法。当$foo判定为假时会直接短路,后半部分代码不会执行,自然无任何输出,完全匹配你的使用场景。 - 三元表达式简化写法
如果你坚持使用三元表达式,除了你当前的echo $foo ? 'bar' : '';写法外,如果你的输出值就是判断变量$foo本身,可以使用PHP的Elvis运算符简写:
这个写法等价于echo $foo ?: '';echo $foo ? $foo : '';,适合判断为真时直接输出变量本身的场景。 - 模板场景专用写法
如果你是在视图模板中输出内容,可以使用PHP官方支持的短输出标签(PHP 5.4及以上版本默认无需额外配置即可使用):
比完整的<?= $foo ? 'bar' : '' ?><?php echo ... ?>写法简洁很多,是模板开发的常用写法。
注意:以上所有写法的判断逻辑都和原生三元表达式一致,会对判断变量做弱类型转换,
0、""、null、[]等值都会被判定为假,逻辑和你原本的写法完全兼容。
内容的提问来源于stack exchange,提问作者SeaBass
相关产品推荐
相关产品推荐

