如何将使用空合并运算符的语句附加到字符串?

时间:2018-11-19 18:23:44

标签: php php-7

我在以下位置有一个带有运算符的字符串:

echo 'abc.' . $type ?? 'no type' . 'xyz';

如果$ type存在,我希望将其作为值,否则,我希望将“ no type”作为其值。

但是通过上面的操作,我得到一个$ type undefined错误。在我的示例中未定义它,因为我希望输出“ no type”。

我要去哪里错了?

3 个答案:

答案 0 :(得分:8)

您需要在??周围添加括号。操作员...

echo 'abc.' . ($type ?? 'no type') . 'xyz';

它所做的就是先评估'abc.' . $type,然后再评估??

关于operator precedence的一切(感谢@Blackhole提示)。

答案 1 :(得分:1)

Null Coalescing Operator

echo 'abc.' . ($type ?? 'no type') . 'xyz';

或这个(ternary operator

echo 'abc.' . (isset($type) ? $type : 'no type' ) . 'xyz';

答案 2 :(得分:0)

使用echo时不需要使用串联。它可以有多个参数,只需用逗号将它们分开(就好像是一个实际函数一样):

echo 'abc.', $type ?? 'no type', 'xyz';

这也(略)比提议的答案更有效,特别是对于长字符串(PHP在显示字符串之前不必在缓冲区中构造/存储整个字符串)。