Является ли следующее:
$arr = [
foo => 'bar',
bar => 'foo'
];
Такой же как:
$arr = [
'foo' => 'bar',
'bar' => 'foo'
];
Другими словами, стоит ли ставить кавычки на именованные индексы? Когда будет действительно необходимо помещать кавычки в строковые индексы?
Ваш первый пример должен бросить УВЕДОМЛЕНИЕ. Если вы не используете кавычки, тогда 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 это устарело.
PHP преобразует «голые строки» в правильные строки, но выдает предупреждение. Вполне вероятно, что эта функциональность исчезнет в будущем.
Если вы действительно, действительно хотите это сделать (вы не должны), он будет работать как журнал, так как строка соответствует формат для константы, который является регулярным выражением
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
(Не делай этого. Просто не делай этого.)