一般情况下两者是通用的.
1、但双引号内部变量会解析,单引号则不解析.
PHP允许我们在双引号串中直接包含字串变量。
而单引号串中的内容总被认为是普通字符,因此单引号中的内容不会被转义效率更高。
比如:
$str='hello';
echo "str is $str"; //运行结果: str is hello
echo 'str is $str'; //运行结果: str is $str
2、php中,双引号中的变量($var)和特殊字符(\r\n之类)会被转义,单引号中的内容不会被转义(所以效率更高)。但是2种情况例外:
(1)在正则字符串中,单引号中的换行之类的特殊字符也是可以被转义的,例如:
$find = '/\r\n/';
preg_match($find, $content , $match);
(2)'\\':这种情况也是会并且需要转义的。
若字符不是转义字符,则会认为是两个字符,如"\z"会被认为是两个字符。这一点跟js中不一样,在js中'\z'虽然不是转义字符,仍会被认为是一个字符,等价于'z',js中的双引号和单引号没有差异。
3、在sql字符串里这样写$sql = "SELECT * FROM table WHERE id = $id",这样里面的$id可以被转义,单引号就不行。