这些索引到 PHP 数组的方法之间有什么区别(如果有的话):
$array[$index]
$array["$index"]
$array["{$index}"]
我对性能和功能差异都感兴趣。
更新:
(回应@Jeremy)我不确定这是对的。我运行了这段代码:
$array = array(100, 200, 300);
print_r($array);
$idx = 0;
$array[$idx] = 123;
print_r($array);
$array["$idx"] = 456;
print_r($array);
$array["{$idx}"] = 789;
print_r($array);
并得到了这个输出:
Array
(
[0] => 100
[1] => 200
[2] => 300
)
Array
(
[0] => 123
[1] => 200
[2] => 300
)
Array
(
[0] => 456
[1] => 200
[2] => 300
)
Array
(
[0] => 789
[1] => 200
[2] => 300
)
原文由 svec 发布,翻译遵循 CC BY-SA 4.0 许可协议
参见上面的@svec 和@jeremy。所有数组索引的类型首先是“int”,然后是“string”类型,并且将在 PHP 认为合适的情况下转换为该类型。
性能方面,\(index 应该比 "\)index” 和 “{$index}” 快(它们是相同的)。
一旦你开始一个双引号字符串,PHP 将进入插值模式并首先将其视为一个字符串,但会从本地范围内寻找变量标记($、{} 等)来替换。这就是为什么在大多数讨论中,真正的“静态”字符串应该始终是单引号,除非您需要像“\n”或“\t”这样的转义快捷方式,因为 PHP 不需要在运行时尝试插入字符串,并且完整的字符串可以静态编译。
在这种情况下,双引号将首先将 \(index 复制到该字符串中,然后返回该字符串,而直接使用 \)index 将只返回该字符串。