while (list($key,$value) = each($array))
ou foreach
?
$array['key']
- $array[key]
str_replace
: plusieurs appels ou avec des tableaux ?file_exists
ou is_file
?$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.
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.04311 s, Vitesse: 23198199 instructions par seconde
TEST 2 --- quand on code mal
<?php $a = $tablo[nom]; ?>
Résultat : $a=Sylvain
Durée: 0.3057 s, Vitesse: 3271224 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.06828 s, Vitesse: 14645990 instructions par seconde
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 !