PHP中单引号与双引号的区别分析
在PHP中,我们可以使用单引号或者双引号来表示字符串。不过我们作为开发者,应该了解其中的区别。单引号与双引号对于定义字符一个是可以解析变量一个是会把变量直接输出来,同时单引号与双引号在字符处理上单引号要优与双引号
①转义的字符不同
单引号和双引号中都可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义符本身。如果用双引号(“”)括起字符串,PHP懂得更多特殊字符串的转义序列。
1
2
3
4
5
6
7
|
<?php
$str1
=
'\'
,\\,\r\n\t\v\$\"';
echo
$str1
,
'<br />'
;
$str2
=
"\"
,\\,a\r\n\tb\v\$\'";
echo
$str2
,
'<br />'
;
?>
|
②对变量的解析不同
单引号字符串中出现的变量不会被变量值替代。即PHP不会解析单引号中的变量,而是将变量名原样输出。双引号字符串最重要的一点是其中的变量名会被变量值替代,即可以解析双引号中包含的变量。
1
2
3
4
5
6
7
|
<?php
$age
= 20;
$str1
=
'I am $age years old'
;
$str2
=
"I am $age years old"
;
echo
$str1
,
'<br />'
;
echo
$str2
,
'<br />'
;
?>
|
③解析速度不同
单引号不需要考虑变量的解析,速度比双引号快.推荐用单引号.有的时候双引号也比较好用,比如在拼凑sql 语句
反斜杠
1
2
3
4
5
6
7
8
9
10
11
12
|
echo
' this \n is \r the blog \t of \\ zhoumanhe \\'
;
echo
'
';
echo
"
";
echo
"this \n is \r the blog \t of \\ zhoumanhe \\"
;
|
使用sql
假设查询条件中使用的是常量,例如:
1
|
select
*
from
abc_table
where
user_name=
'abc'
;
|
SQL语句可以写成:
1
|
SQLstr = “
select
*
from
abc_table
where
user
_name= ‘abc'” ;
|
假设查询条件中使用的是变量,例如:
1
|
$user_name
=
$_REQUEST
[
'user_name'
];
|
或
1
|
$user
=
array
(”name”=>
$_REQUEST
[
'user_name‘,"age"=>$_REQUEST['
age'];
|
SQL语句就可以写成:
1
2
|
SQLstr = “
select
*
from
abc_table
where
user_name = ‘ ” . $user_name . ” ‘ “;
SQLstr = “
select
*
from
abc_table
where
user_name = ‘ ” . $
user
[
"name"
] . ” ‘ “;
|
对比一下:
1
2
3
|
SQLstr=”
select
*
from
abc_table
where
user_name = ‘ abc ‘ ” ;
SQLstr=”
select
*
from
abc_table
where
user_name =
' ” . $user _name . ” ‘ “;
SQLstr=”select * from abc_table where user_name ='
” . $
user
[
"name"
] . ” ‘ “;
|
SQLstr可以分解为以下3个部分:
1
2
3
|
1:”
select
*
from
table
where
user_name = ‘ ” //固定SQL语句
2:$
user
//变量
3:” ‘ ”
|
附:大家也看到了 echo '<br/>'; html中的标签在单引号和双引号中都有效。
总结一下PHP引号使用原则
1.字符串的值用引号
2.PHP中尽量用单引号,HTML代码全部用双引号
3.在包含变量的时候,用双引号可以简化操作
4.复杂的情况下用大括号包起来
PHP引号还有一个用处就是,有的时候需要用php生成文本文件,换行符n需要用双引号才能好使,单引号则会直接把n当成字符输出。
使用总结:在字符串里面不需要加入 变量 或者 单引号(')和反斜杠(\) 时,尽量用单引号引字符串,因为省去了双引号检查处理转义和解析变量上面的时间。能用单引号尽量用单引号。