Le chiavi degli array sono stringhe e quindi vanno _sempre_ messe tra apici. Quando PHP trova un identificatore senza apici prima verifica se è una parola riservata o una costante dichiarata; solo in caso contrario la interpreta come stringa.

codice:
abstract
fa parte della sintassi della programmazione orientata ad oggeti ed evidentemente è stata introdotta in PHP solo a partire dalla versione 5, mentre nella 4 non esistendo poteva essere interpretata come la stringa
codice:
'abstract'
Verifica la documentazione ufficiale di PHP, nella pagina
http://es.php.net/manual/it/print/la...ypes.array.php
cercando il paragrafo
Array do's and don'ts
Why is $foo[bar] wrong?

Ciao!