有关PHP中单引号和双引号的说明

时间:2014-01-10 20:39:06

标签: php

如果我写的话

$var = 12;
echo '$var'; //$var gets printed
echo "$var"; //12 gets printed

但是当我做

之类的事情时
$name = 'peter'; $email = 'peter@yahoo.com';
$query = "INSERT INTO email_list (name, email)  VALUES ('$name', '$email')";

为什么变量的值会插入到表中? 为什么'$ name'和'$ email'没有插入到表中,因为它们被包含在单引号内?

类似地,

echo 'i am going <br />';

未打印:i am going <br />

3 个答案:

答案 0 :(得分:3)

  

为什么要在表中插入变量的值,为什么   不是'$ name'和'$ email'会被插入到表中,因为它们   用单引号括起来。

因为您的字符串是用双引号("INSERT INTO email_list (name, email) VALUES ('$name', '$email')";)引用的,所以整个字符串都执行了变量扩展。如果您撤消了对引号的使用,那么您将获得您在字符串中使用$name$email引用的输出。

  

同样,echo 'i am going <br />';为什么不打印:i am going <br />

实际情况确实如此,但是<br />只是一个换行符并且没有产生可见的输出,只是一个换行符。要输出<br />之类的标记并查看它,您需要输出实体,例如&lt;br /&gt;在浏览器中呈现为<br />

如需进一步阅读,请参阅http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing

答案 1 :(得分:2)

双引号强制PHP评估字符串(即使可能不需要),而不评估单引号之间的字符串。 以下是完整说明:

What is the difference between single-quoted and double-quoted strings in PHP?

答案 2 :(得分:0)

好的,因为单引号在双引号内,它们只是单引号字符。他们不是分隔符。 即:

"hey guys, I'm going to the movies!" // <-- acting as simple text
"hey guys".' '."eat my food, ok?" // <-- acting as delimiters since it's broken up into three actual strings concatenated by the dot operator.

这有意义吗?