我正在阅读som遗留代码并且遇到了一个奇怪的案例:
$my_assoc_array; /* User defined associative array */
$my_key; /* User defined String */
$value = $my_assoc_array["$my_key"];
当变量用作关键字时,您是否有任何明智的理由想要在变量周围加上引号("
)?就像一个非常特殊的角落案例?或者完全没有理由这样做?
- 编辑 -
也许在某些旧版本的PHP中存在差异? (请记住这是遗留代码)。
答案 0 :(得分:1)
有一个例子,我可以找到输出不同的地方,即$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"
这可以(误)用于击败我......
答案 1 :(得分:0)
不必将变量名称与数组索引中的双引号绑定:
你可以简单地用引号写出来:
$value = $my_assoc_array[$my_key];
答案 2 :(得分:-3)
如果$ 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] */