Is the following:
$arr = [
foo => 'bar',
bar => 'foo'
];
The same as:
$arr = [
'foo' => 'bar',
'bar' => 'foo'
];
In other words, is putting quotes on named indexes unnecessary? When would be the only times when putting quotes on string indexes be really needed?
PHP converts "bare strings" into proper strings, but will give you a warning. It is likely that this functionality will disappear in future.
If you really, really want to do this (you shouldn't), it will work as log as the string matches the format for a constant, which is the regex
(Don't do it. Just don't.)
Your first example should throw a NOTICE. If you do not use quotes then PHP will look for a constant with that name.
I ran this example in PHP 7.1.8, however in PHP 7.2 this has been deprecated.