PHP 不带引号的数组访问

2023-11-26

我在现有的 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)。

我更喜欢案例2这样的访问方法。

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


这里发生的是 PHP 看到的一个常数 called test。如果定义了常量,则返回该值,未定义,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".

它是为了向后兼容,你不应该使用它。如果你愿意打开通知,你会看到 PHP 对此有抱怨。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 不带引号的数组访问 的相关文章

随机推荐