Is it okay to use array[key] in PHP?

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?

Leave a Comment