第一种方式:
$txt=123;
$txt1=array("a","b","c","d");
echo $txt."<br/>";
echo $txt1[1]."<br/>"; //注意"."这个拼接符
print $txt."<br/>";
print $txt1[2]."<br/>"; //注意"."这个拼接符
第二种方: $txt1="学习 PHP"; $txt2="RUNOOB.COM"; $cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP "; //这个没有用拼接符
echo "<br>";
echo "我车的品牌是 {$cars[0]}"; //这个没有用拼接符,并且数组外面用了花括号
疑问:哪种更规范一点? 为什么要用花括号包住数组? 请求各路大神解答一下谢谢
1
sagaxu 2017-05-06 16:41:18 +08:00
都不规范,要用模板,不要自己拼
|
2
abcbuzhiming 2017-05-06 16:57:23 +08:00
echo "我车的品牌是 {$cars[0]}";
======== 这种方式有问题,据我所知原生的 PHP 是没有这种东西的,除非你在用某种模板引擎比如 smarty,这是模板变量的写法 |
3
Mine 2017-05-06 17:07:38 +08:00
其实这玩意,只要功能达到了,个人开发规不规范都可以,团队协作的时候多写些注释还好。
不过还是第一种比较好,多用 . 来链接,这样变量和文字都能清晰的看出来,写在一起的话,单引号是不是解析变量的,要是报错了,找起来挺麻烦的。 |
4
Kilerd 2017-05-06 17:32:11 +08:00
@abcbuzhiming 不,可以在字符串中用 {} 来直接输出变量。
|
5
caola 2017-05-06 17:39:37 +08:00 1
第一种可以简化成:
$txt = 123; $txt1 = ['a', 'b', 'c', 'd']; echo $txt, '<br/>', $txt1[1], '<br/>', $txt, '<br/>', $txt1[2], '<br/>'; 第二种可以简化成: $txt1 = '学习 PHP'; $txt2 = 'RUNOOB.COM'; $cars = ['Volvo', 'BMW', 'Toyota']; echo $txt1, '<br> 在 ', $txt2, ' 学习 PHP <br> 我车的品牌是 ', $cars[0]; 一个合格的 php 程序猿,要遵守标准和与时俱进: 注意单双引号的用法,创建数组不建议使用 array() 和老版本 php。 能简则简,写那么多重复的 echo 有什么意思。 如看不惯一行过的 echo,那么可以在每个逗号换行。 |
6
jarlyyn 2017-05-06 18:38:14 +08:00 1
都不规范,规范的应该是 echo $output....
这不是抖机灵或者吐槽。 然后回到拼接字符串的问题。 这是两个方向的功能。 用. 链接是标准的字符串拼接。最常见的是用在各个函数的返回值的拼接上。 用$占位符是文本的替换,一般用在最终输出的模板上。 至于花括号,是为了更好的区分变量名和模板字符串,而不是靠程序自动判别。 如果是我的话。一般所有的变量都会用花括号。 |
7
vibbow 2017-05-06 19:45:19 +08:00
|
8
kookxiang 2017-05-06 20:53:51 +08:00
跟 echo 没有半毛钱关系,你用双引号引起来的内容会被解析,就算你不加花括号也一样会被解析,只是用了花括号就可以消除歧义并且提升下效率
可以去搜索下 php 里面双引号和单引号的区别就知道了 |
9
abcbuzhiming 2017-05-07 15:39:03 +08:00
|
10
miaotaizi 2017-05-07 21:45:01 +08:00 via iPhone
大括号什么时候变成模版引擎了…
|
11
byfar 2017-05-08 09:34:10 +08:00 1
两种用法都能实现功能,没有什么规范不规范吧,个人喜好问题。虽然我是乱说的
注意第二种方法用的是双引号,如果换成单引就不行,因为双引会对里面的字符串进行变量解析,花括号的作用是规定变量的界限。 比如: $hello="hello "; echo "$helloword"; // Notice: Undefined variable echo PHP_EOL; echo "{$hello}word"; // hello word 所以,如果不用界定符{} 变量解析时寻找分隔符来进行变量解析,比如 echo "$hello word"; // hello word 另外 heredoc 也可以实现变量解析,比如 echo PHP_EOL; echo <<<'EOF' {$hello}word EOF; // output {$hello}word, 功能同单引号 echo PHP_EOL; echo <<<EOF {$hello}word EOF; // output hello word,功能同双引号 |