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