在数组访问中使用变量周围的引用标记

Using citation marks around a variable in array access

我正在阅读一些遗留代码并遇到了一个奇怪的案例:

$my_assoc_array; /* User defined associative array */
$my_key; /* User defined String */
$value = $my_assoc_array["$my_key"];

当变量用作键时,您想要在变量周围加上引号 (") 有什么巧妙的理由吗?像一个非常特殊的角落案例?或者根本没有理由这样做?

-- 编辑 --
也许在 PHP 的某些旧版本中存在差异? (记住这是遗留代码)。

不需要在数组索引中用双引号绑定变量名:

你可以简单地写不带引号:

$value = $my_assoc_array[$my_key];

如果$my_key是一个整数值,它将是不同的

$my_key = 3; /* User defined String */
$value = $my_assoc_array["$my_key"]; /* returns $my_assoc_array["3"] */
$value = $my_assoc_array[$my_key]; /* returns $my_assoc_array[3] */

有一个例子,我可以找到输出不同的地方,即 $mykey = false。 (这可能不适用于您的示例,其中 $mykey 是一个字符串,但话又说回来:这是 PHP 的狂野世界)

<?php
$arr = array("1"=>"b", "0"=>"a");
$mykey = false;
var_dump($arr[$mykey]);
// returns "a"
var_dump($arr["$mykey"]);
// gives Undefined index error

$mykey = true;
var_dump($arr[$mykey]);
// returns "b"
var_dump($arr["$mykey"]);
// returns "b"

这可以(误)用于击败我...