PHP的大括号,详解
本文原创,转载请注明出处,谢谢合作!
今天更新了日志,点Tag:面试,结果出来了一些不相关的东西,感觉很奇怪,把SQL导出,我在本地调了下,发现原来是
SQL语句里的问题。
代码如下
-
select * from blog_blogs where blog_tags like ‘%{$k}%’ order by blog_id
因为Tags的ID是用大括号分开的,就是{1}{2}这样形式,但是用以上语句查询得不出正确结果,原因就是这个语句最终变成了
代码如下
-
select * from blog_blogs where blog_tags like ‘%$k%’ order by blog_id
这样的形式,哎 !现在就来说说PHP里大括号的作用吧。
一、不管什么程序,function name(){}, for(){}, ….这太多了,不说也知道什么用了。
二、$str{4}在字符串的变量的后面跟上{}刚大括号和中括号一样都是把某个字符串变量当成数组处理
三、{$val}这种情况就是我遇到的问题,这时候大括号起的作用就是,告诉PHP,括起来的要当成变量处理。看下一个简单的代码
代码如下
-
<?php
-
Header(‘content-type:text/html;charset=utf-8′);
-
$array=array(
-
0=>123,
-
1=>234,
-
‘name’=>‘小猪’,
-
);
-
foreach($array as $k=>$v){
-
echo “select * from blog_blogs where blog_tags like ‘%{$array[$k]}%’ order by blog_id”.‘<br>’;
-
}
-
?>
输出为:
select * from blog_blogs where blog_tags like ‘%123%’ order by blog_id
select * from blog_blogs where blog_tags like ‘%234%’ order by blog_id
select * from blog_blogs where blog_tags like ‘%www.pigblog.net%’ order by blog_id
select * from blog_blogs where blog_tags like ‘%小猪%’ order by blog_id
从上面就可以看出我的代码出错的原因了。
把上面灰色的换成如下
代码如下
-
foreach($array as $k=>$v){
-
echo “select * from blog_blogs where blog_tags like ‘%{{$array[$k]}}%’ order by blog_id”.‘<br>’;
-
}
输出为:
select * from blog_blogs where blog_tags like ‘%{123}%’ order by blog_id
select * from blog_blogs where blog_tags like ‘%{234}%’ order by blog_id
select * from blog_blogs where blog_tags like ‘%{www.pigblog.net}%’ order by blog_id
select * from blog_blogs where blog_tags like ‘%{小猪}%’ order by blog_id
对比一下画线的地方,就是这里改了下,这样就正确了。
那现在自己想一下,本来PHP里如果用 双引号 就会自动识别变量,怎么还搞个大括号?
目前我的经验是:在双引号里,如果用显示的关联数组就会报出语法错误,出错语句如下
代码如下
-
Header(‘content-type:text/html;charset=utf-8′);
-
$array=array(
-
0=>123,
-
1=>234,
-
‘pig’=>‘www.pigblog.net’,
-
‘name’=>‘小猪’,
-
);
-
echo “$array['name']“.‘<br>’;
输出为:
Parse error: parse error, expecting `T_STRING’ or `T_VARIABLE’ or `T_NUM_STRING’ in D:xc_blog1.php on line 9
但是如果变成这样的代码,就是在双引号里,用大括号就是正常的。
代码如下
-
Header(‘content-type:text/html;charset=utf-8′);
-
$array=array(
-
0=>123,
-
1=>234,
-
‘pig’=>‘www.pigblog.net’,
-
‘name’=>‘小猪’,
-
);
-
echo “{$array['name']}“.‘<br>’;
输出为:
小猪
所以说,大括号还是很有用的。当然了,你也可以把数组变量和双引号分开就不用大括号了,个人喜好吧。
小生也是PHP新手,如若有错还请大大们及时指正批评,在这先谢谢啦










大括号使用非常灵活,没看见过官方doc……
不过有很多第三方总结
for example (代码片段):
还有 http://www.php.net/manual/en/language.types.string.php search :braces
最猛的帖子: http://cowburn.info/2008/01/12/php-vars-curly-braces/