Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用null coalesce运算符将语句附加到字符串?_Php_Php 7 - Fatal编程技术网

Php 如何使用null coalesce运算符将语句附加到字符串?

Php 如何使用null coalesce运算符将语句附加到字符串?,php,php-7,Php,Php 7,我有一个字符串,其中有一个运算符: echo 'abc.' . $type ?? 'no type' . 'xyz'; 如果$type存在,我希望它是值,如果不存在,我希望'no type'是值 但是有了上面的代码,我就得到了一个$type未定义的错误。在我的示例中没有定义它,因为我希望输出“no type” 我哪里做错了?: 还是这个() 您需要在??接线员 echo 'abc.' . ($type ?? 'no type') . 'xyz'; 它所做的是像“abc”一样评估它$键入,然后

我有一个字符串,其中有一个运算符:

echo 'abc.' . $type ?? 'no type' . 'xyz';
如果$type存在,我希望它是值,如果不存在,我希望'no type'是值

但是有了上面的代码,我就得到了一个$type未定义的错误。在我的示例中没有定义它,因为我希望输出“no type”

我哪里做错了?

还是这个()


您需要在??接线员

echo 'abc.' . ($type ?? 'no type') . 'xyz';
它所做的是像“abc”一样评估它$键入,然后键入??


这一切都是关于(感谢@Blackhole的提示)。

使用时不需要使用串联。它可以接受多个参数,只需用逗号分隔它们(就像它是一个实际函数):


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

我们可以从询问您使用的PHP版本开始,因为
是一个相对较新的运算符。我使用的是PHP7。请更新您的问题,以提及这一点。没有人应该阅读注释线程来回答您的问题=)另外,您是否确保通读了运算符优先级列表?(具体地说,您想看看
??
中的哪一个先到)A到文档。不过,在这种情况下,这并不是一个真正有用的答案。使用
??
可以,但是
具有更高的优先级,因此
??
表达式需要放在括号中。
echo 'abc.' . (isset($type) ? $type : 'no type' ) . 'xyz';
echo 'abc.' . ($type ?? 'no type') . 'xyz';
echo 'abc.', $type ?? 'no type', 'xyz';