// With one exception: braces surrounding arrays within strings allows constants
// to be interpreted
print"Hello {$arr[fruit]}"; // Hello carrot
print"Hello {$arr['fruit']}"; // Hello apple
// This will not work, and will result in a parse error, such as:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE'or T_NUM_STRING' // This of course applies to using superglobals in strings as well
print"Hello $arr['fruit']";
print"Hello $_GET['foo']";
PHP 双引号里用单引号会报错
报错
数组引用, 有无单引号$conn['host'] 和 $conn[host] 效率会差多少?
手册里写有
- 用逗号连接,不拼接字符串,也不用双引号解析变量。省资源。
用.是先拼接在echo,,逗号个数代表echo的调用次数(可以这么理解暂时)php编程中echo用逗号和用点号连接的区别
“点号”是一个字符串连接符,用来拼接字符串,把两个或多个字符串链接起来
“逗号”并不是一个连接符,他只是在使用 echo 输出一系列的变量、字符串、数字等等内容时使用,或者说通过 echo 输出多个东西时,用“逗号”分割开。
所以,“逗号”和“点号”没有什么联系,也没有什么可对比的。
省去了字符串拼接的步骤,理论上在 echo 的时候用“逗号”性能会高一点。
#1$conn['host'] 和 $conn[host]根本不是同一个东西
不带引号,host 表示一个常量,PHP 会先去找这个常量,如果有就用其值作为键值,如果没有就把 host 看作字符串直接作为键值,并报出一个 Notice
`Notice: Use of undefined constant host - assumed 'host'....`
用单引号不会出错,但是在双引号里使用下标引用数组元素必须加{}来区分,不然会产生解析出错
这涉及到的是 PHP 中的变量解析 参见变量解析,复杂语法
#4可以用隐式类型转换理解
要不
$dsn = "HOST is {$conn['host']}";
要不
$dsn = "HOST is $conn[host]";
在双引号里面访问数组数据可以不加单引号。
比如说:一个人A为父类,他的儿子B,妻子C,私生子D(注:D不在他家里)
如果我们给A的事情增加修饰符:
public事件,地球人都知道,全公开
protected事件,A,B,D知道(A和他的所有儿子知道,妻子C不知道)
private事件,只有A知道(隐私?心事?)
internal事件,A,B,C知道(A家里人都知道,私生子D不知道)
protected internal事件,A,B,C,D都知道,其它人不知道