PHP数组键中的引号

时间:2010-12-15 17:42:46

标签: php arrays

我在我的工作中使用PHP代码,其中一些非常糟糕。当我在处理文件时,我看到了这个:

$array["$rowID"]['value'] = $value

是否有任何理由$rowID应该用双引号括起来?

以下显然效果很好:

$array[$rowID]['value'] = $value

这只是个人偏好,还是有理由为什么密钥是双引号?

6 个答案:

答案 0 :(得分:5)

没有。没有额外的功能。它可能会减慢速度,因为它试图查看字符串中是否有任何文字内容以及要评估的任何变量。

答案 1 :(得分:2)

转到第二个版本。最终结果没有差异,但第二个结果更快。第一个必须通过PHP进行插值,而第二个可以进行标记而无需任何额外的努力。 (然而,两者的差异是微不足道的。)

由于第二个版本更易于阅读,请使用它。

答案 2 :(得分:1)

两个字:可变插值

在PHP中,双引号字符串是特殊的,因为它们被解析为字符串中的任何变量,并且如果找到任何变量,它将输出变量的文字值。

所以在这种情况下,最终结果完全相同。

我建议使用第二种方法,因为它节省了解析字符串所需的额外时间。

答案 3 :(得分:1)

没了。不仅没有理由,如果在其他地方没有正确完成验证,你可能想要转换$ rowID。例如$array[(int)$rowID]['value']

答案 4 :(得分:1)

以所示方式执行此操作的唯一原因是强制该变量为字符串。比如说,$ rowID是一个对象,该对象有一个toString()方法。在第一种情况下,它将被键入该字符串。在第二种情况下,它会崩溃。

答案 5 :(得分:1)

这是一种棘手的情况,因为$ array [“$ rowId”]将基于STRING键处理数组映射值,而$ array [$ rowId]将根据标量类型寻址数组映射$ rowId的值。除非$ rowId是一个字符串,否则我可能会发现这可能导致问题。

尝试一下,看看它是否有任何区别

$index = 5;
$intIndexArray = array($index => "hello");
$stringIndexArray = array("$index" => "world");
echo $intIndexArray["$index"];
echo $stringIndexArray[$index];

如果存在任何差异,则不会打印“你好”或“世界”......