La forma correcta es $array['dato'] la otra creo que lanza un warning advirtiendo que intepreta dato como 'dato'. Algun tiempo pierde haciendo esa interpretación, ademas podria darse el caso que la palabra fuese reservada y luego no se producieses la interpretación.
(He interpretado 'dato' con el indice del array)
Manual Cita: ¿Por qué es incorrecto $foo[bar]?
Siempre deben usarse comillas alrededor de un índice de array tipo string literal. Por ejemplo,
$foo['bar'] es correcto, mientras que
$foo[bar] no lo es. ¿Pero por qué? Es común encontrar este tipo de sintaxis en scripts viejos:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
Esto está mal, pero funciona. La razón es que este código tiene una constante indefinida (bar) en lugar de un
string ('bar' - observe las comillas). Puede que en el futuro PHP defina constantes que, desafortunadamente para tales tipo de código, tengan el mismo nombre. Funciona porque PHP automáticamente convierte un
string puro (un
string sin comillas que no corresponde con ningún símbolo conocido) en un
string que contiene el
string puro. Por ejemplo, si no se ha definido una constante llamada
bar, entonces PHP reemplazará su valor por el
string 'bar' y usará éste último.
Mas o menos lo que decia yo....!!!