不带引号的 PHP 数组访问

标签 php arrays apostrophe

我在现有的 php 源代码中发现了一个现象, 像这样不带撇号的字段访问:$_GET[test].

我不确定,也不知道这是一种可能的方式, 所以我写了一个简短的测试示例:

echo "Array Test, fields without apostrophe, like \$_GET[fieldname]<BR><BR>";
$a = array();
$a['test'] = "ArrayValue";
echo "case 1 -> \$a['test']: " . $a['test'] . "<BR>";
echo "case 2 -> \$a[\"test\"]: " . $a["test"] . "<BR>";
echo "case 3 -> \$a[test]: " . $a[test] . "<BR>";

它起作用了,每个结果都得到了值 (ArrayValue)。

我更喜欢case 2的访问方式。

情况 3 是 php 中允许的正常编码风格吗?

最佳答案

这里发生的是 PHP 看到了 a constant称为测试。如果定义了常量,则返回值,如果没有定义,PHP 会回退到字符串 "test"。例如:

$array = array("A" => "Foo", "B" => "Bar", "C" => "Baz")
define("B", "C");

echo $array[A];   // The constant "A" is undefined, 
                  // so PHP falls back to the string "A", 
                  // which has the value "Foo".
echo $array["B"]; // The result is "Bar".
echo $array[B];   // The value of constant "B" is the string "C".
                  // The result is "Baz".

它是为了向后兼容,你不应该使用它。如果你愿意 turn on notices ,您会看到 PHP 会提示它。

关于不带引号的 PHP 数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622486/

相关文章:

javascript - JSON.parse() 抛出意外的 token 错误。不知道为什么?

php - 古怪的社交网络墙代码逻辑

javascript - $_SESSION 破坏 url 中的参数(在 Angular 项目中)

c - 返回指向指针数组的指针

ruby - 如何在 Ruby 1.8.7 中将 Microsoft Office "Smart"或 "Curly"引号/撇号转换为 ASCII 或 UTF-8 "Straight"引号/撇号?

mysql - MySQL 中的特殊字符转义

php - 我在哪里可以找到 symfony 1.4 的深入教程?

java - 无法弄清楚如何显示对象数组Java

php - 何时可以在多维数组中访问定义的变量?

php - MySQL真正的转义字符串