将引号放在PHP命名索引上是不必要的?

时间:2018-03-19 14:55:33

标签: php arrays indexed

以下是:

$arr = [
    foo => 'bar',
    bar => 'foo'
];

与:

相同
$arr = [
    'foo' => 'bar',
    'bar' => 'foo'
];

换句话说,是否不需要在命名索引上加引号?什么时候才真正需要在字符串索引上引用引号?

2 个答案:

答案 0 :(得分:6)

您的第一个示例应该抛出 NOTICE 。如果你不使用引号,PHP将查找具有该名称的常量。

php > $myArr = [abc => 'hello'];
PHP Notice:  Use of undefined constant abc - assumed 'abc' in php shell code on line 1
PHP Stack trace:
PHP   1. {main}() php shell code:0

Notice: Use of undefined constant abc - assumed 'abc' in php shell code on line 1

Call Stack:
    9.7779     350840   1. {main}() php shell code:0

我在PHP 7.1.8中运行了这个例子,但是在PHP 7.2 this has been deprecated中。

答案 1 :(得分:0)

PHP转换"裸字符串"进入正确的字符串,但会给你一个警告。这个功能很可能在将来消失。

如果你真的,真的想这样做(你不应该),它将作为日志工作,因为字符串匹配format for a constant,这是正则表达式

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

(不要这样做。只是不要。)