PHP中能否链式使用多个三元简写(Elvis)运算符?
PHP三元简写(Elvis)运算符的链式使用问题
三元简写(Elvis)运算符的逻辑很直接:检查第一个值是否为真值,是就返回该值,否则返回第二个值。示例:
$falseyValue ?: 'expected'; // 结果为 expected
我常用空合并运算符,它的链式调用在很多场景里特别实用:
$nullValue ?? $anotherNullValue ?? 'expected'; // 结果为 expected
它的判断逻辑是:先看$nullValue是否存在且不为null,不满足就检查$anotherNullValue,如果两者都不符合,最终返回'expected'。
那三元简写运算符能不能像这样链式使用?比如下面这段代码:
$falseyValue ?: $anotherFalseyValue ?: 'expected'; // 结果为 expected
答案是肯定的!PHP支持三元简写运算符的链式调用,逻辑是从左到右依次判断:
- 先判断
$falseyValue是否为真值,是就返回它; - 如果
$falseyValue是假值,接着判断$anotherFalseyValue是否为真值,是就返回它; - 要是前两个都是假值,最终返回
'expected'。
需要注意的是:三元简写运算符判断的是「是否为真值」(假值包含false、0、空字符串''、null、空数组[]等),而空合并运算符只判断「是否存在且不为null」,这是两者链式使用时最核心的差异。
内容的提问来源于stack exchange,提问作者Augusto Moura
相关产品推荐
相关产品推荐

