PHP中echo输出中存在括号"()"的处理
2018-08-15 本文已影响117人
老衲灬
echo的官方解释如下:
echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以。 echo (不像其他语言构造)不表现得像一个函数, 所以不能总是使用一个函数的上下文。 另外,如果你想给echo 传递多个参数, 那么就不能使用小括号。
个人总结:
关于echo中存在括号,且存在多个字符串的相关问题,测试代码如下:
//1、全部用括号包起来的情况,其中只能存在一个参数,才会被输出
echo ('b','#',"aabbcc"); //报错 "语法错误,不被期望的','"(相当于传了多个参数)
echo ('b'.'#'."aabbcc"); //b#aabbcc
echo ((('abc'))); //abc
// 2、无","或"."连接,但存在括号的情况会被解析为函数的调用
// 注意:如果存在连续三个及三个以上括号的情况,则会报错
echo "str_replace"('b','#',"aabbcc"); //aa##cc
echo 'strlen'('abc'); //3
echo ('strlen')('abc'); //3
echo ('aaa')('bbb'); //报错:aaa函数未定义
echo ('strlen')('abc')('ss'); //报错 "函数名不是一个字符串"
//3、存在","或"."连接的情况,即单纯的字符串顺序输出或连接
echo 'strlen',("aaa"); //strlenaaa
echo 'strlen'.("aaa"); //strlenaaa
echo ('aaa').('bbb'); //aaabbb