Choisissez un test :

$array["key"] - $array[key]

Un tableau peut être indexé par des chaînes de caractères et non pas uniquement par des chiffres (0, 1, ... i).
Quand on possède le tableau
<?php $tablo = array('nom' => 'Sylvain',
                  
'age' => '21'); ?>

On peut directement écrire $tablo['nom']. Comme c'est une chaîne de caractères qui sert de clé du tableau, il faut mettre, comme à toutes les chaînes, des guillemets ou (mieux!) des apostrophes.
Or, souvent on voit des choses du genre $tablo[nom]. PHP va essayer de voir si nom n'est pas une constante définie avec define(nom,'valeur'); et après essaye en mettant nom dans une chaîne de caractères.
Ce qui entraîne une perte de temps !
Pour vous en convaincre voici des tests.

Voici notre tableau initialisé :
Array
(
    [nom] => Sylvain
    [age] => 21
)
Les tests font 1 000 000 d'itérations

TEST 1 --- avec des apostrophes, comme il faudrait faire quand on code bien :-p
<?php $a $tablo['nom']; ?>
Résultat : $a=Sylvain
Durée: 0.04265 s, Vitesse: 23448896 instructions par seconde

TEST 2 --- quand on code mal
<?php $a $tablo[nom]; ?>
Résultat : $a=Sylvain
Durée: 0.3146 s, Vitesse: 3178630 instructions par seconde

TEST 3 --- du code encore plus crade !!! mais un peu plus rapide que le test précédent
<?php $a "$tablo[nom]"?>
Résultat : $a=Sylvain
Durée: 0.07209 s, Vitesse: 13871750 instructions par seconde

Conclusion...

C'est tout simplement idiot de faire un script 3 fois plus lent juste parce qu'on ne met pas les "indices" de tableaux entre guillemets ou apostrophes !
Évidemment je parle des tableaux dont les "clés" sont des chaînes de caractères !