阅读:2206回复:0
实例分析php单引号和双引号的区别
使用php有一段时间了,在单引号和双引号的使用上,一直没有太过在意,感觉使用哪个都一样,没有发现有什么区别。例如:
$name = 'PHP学习笔记'; $name = "PHP学习笔记"; 这两种写法的意思是完全一样的。大多数情况下,我们大家都是定义变量时使用单引号或双引号,就如上述的例子一样,不会觉察到它们之间有什么不同,所以比较容易忽视单引号和双引号它们在某些场合的区别。 今天我写了个php程序,但是无论如何都测试不成功,但我真的确信程序没有问题,因为只是很简单的两三行的代码。如下所示: 上述代码,本意是给s.php传一个q的参数,参数值为“http$bj$3.15”。这貌似很简单的问题,却把我折腾的哭笑不得。因为我在s.php接收到的q参数值并不是“http$bj$3.15”,而是“http$3.15”。我非常郁闷,“$bj”几个字符怎么丢失了?我百思不得其解。 在经历了好多测试后,最后在把上述程序的双引号改为单引号之后,总是传参正常了。 从失败中吸取经验,通过这次事件,让我不得不意识到在php程序里单双引号的不同。最后又经过多个实例的测试,得出如下结论: 双引号里的语句是经过解析后输出,单引号里的语句是直接输出。 例一: $a = "b"; $name1 = '$a'; $name2 = "$a"; 结果: echo $name1 输出 $a;echo $name2 输出为b,因为双引号里的$a会被先解析,$a会被视作一个变量,而这个变量的值为b。 php会把“$”及其后的字母或数字当作一个变量,双引号内仅仅是第一个“$”被视作变量 例二: $name1 = "$c.1"; $name2 = "$c1.1"; $name3 = "$c#1"; $name4 = "$c$1"; 结果: echo $name1输出“.1”,echo $name2输出“.1”,echo $name3输出“#1”,echo $name4输出“$1”。从这可以看出php会把“$”及其后的字母或数字当作一个变量,且双引号内仅仅是第一个“$”被视作变量。 |
|