Массивы — Не нужно ли помещать кавычки в именованные индексы PHP?

Является ли следующее:

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

Такой же как:

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

Другими словами, стоит ли ставить кавычки на именованные индексы? Когда будет действительно необходимо помещать кавычки в строковые индексы?

-2

Решение

Ваш первый пример должен бросить УВЕДОМЛЕНИЕ. Если вы не используете кавычки, тогда 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 это устарело.

6

Другие решения

PHP преобразует «голые строки» в правильные строки, но выдает предупреждение. Вполне вероятно, что эта функциональность исчезнет в будущем.

Если вы действительно, действительно хотите это сделать (вы не должны), он будет работать как журнал, так как строка соответствует формат для константы, который является регулярным выражением

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

(Не делай этого. Просто не делай этого.)

0

По вопросам рекламы [email protected]