It is not considered as OK -- even if it will work in most cases.
Basically, when PHP sees this :
echo $array[key];
It will search for a constant, defined with define
, called key
-- and, if there is none, if will take the 'key'
value.
But, if there is something like this earlier in your code :
define('key', 'glop');
It will not take
echo $array['key'];
anymore ; instead, it'll use the value of the key
constant -- and your code will be the same as :
echo $array['glop'];
In the end, not putting quotes arround the key's name is bad for at least two reasons :
- There is a risk that it will not do what you expect -- which is very bad
- It might, today...
- But what about next week / month / year ?
- Maybe, one day, you'll
define
a constant with the wrong name ;-)
- It's not good for performance :
- it has to search for a constant, before using
'key'
- And, as said in a comment, it generates notices (even if you disable
error_reporting
and display_errors
, the notices/warnings/errors are still generated, even if discarded later)
So : you should not listen to that guy on this point : he is wrong : it does matter.
And if you need some "proof" that's "better" than what people can tell you on stackoverflow, you can point him to this section of the manual, as a reference : Why is $foo[bar] wrong?