Bien définir un tableau

5 messages   •   Page 1 sur 1
Eléphant du PHP | 493 Messages

01 mai 2006, 10:19

Il arrive trop souvent de voir des E_NOTICE lors des définitions et des appels de tableau. Je vais tenter dans ce bref post d'énumérer les erreurs les plus courantes et de dire comment s'en prémunir.


1) La définition :

Il n'est pas rare qu'une mauvaise définition soit à l'origine des erreurs (note: je dis erreur mais il sera question de notice tout au long du post). De manière générale, pensez à déclarer vos variables !
// PAS BIEN
$foo[ 'champ' ] = true;

// BIEN
$foo = array();
$foo[ 'champ' ] = true;

2) Un bon appel :

Au cours de cette semaine passée j'ai remarqué que beaucoup ne mettent pas de quotes lors de l'énumération d'un index de tableau. Là je dis non, ceci est une erreur !
// PAS BIEN
echo $foo[ champ ];

// BIEN
echo $foo[ 'champ' ];
echo $foo[ "champ" ];
Si aucune quote n'encadre l'index, PHP interprète ce dernier comme une constante qui sera (dans la majeure partie des cas) non définie.
// Tableau
$foo = array( 'champ' => 'bonjour' );

// Constante
define ( 'champ', 'hello' );

echo $foo[ champ ]; // hello
echo $foo['champ']; // bonjour

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 mai 2006, 17:18

:idea: précision :

Même si la syntaxe suivante est tout à fait valide, elle est déconseillée car le PHP n'étant que faiblement typé, il paut y avoir des erreurs à la récupération des valeurs
$tableau[$colone] = $valeur
La syntaxe suivante est préférable
$tableau["$colonne"] = $valeur
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

01 mai 2006, 17:53

:idea: précision :

Même si la syntaxe suivante est tout à fait valide, elle est déconseillée car le PHP n'étant que faiblement typé, il paut y avoir des erreurs à la récupération des valeurs
$tableau[$colone] = $valeur
La syntaxe suivante est préférable
$tableau["$colonne"] = $valeur
:shock: :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 656 Messages

02 mai 2006, 01:52

:langue:

Je pense pour ma part que ce genre de chose est préferable :
$tableau[(string) $colonne] = $valeur

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mai 2006, 10:43

Précision de ma précision ;)

Même si je ne suis pas un grand partisans de l'utilisation des variables dans une chaine de caractères, la syntaxe suivante :
$tableau["$identifant"] = $valeur
permet de "caster" l'identifiant en chaine et de toujours pouvoir le récupérer.

Je préfère mon ecriture à la tienne Ultiny car je la trouve plus lisible, à condition d'avoir un editeur qui colore les variables présentes dans les chaines de caractères.

Si j'ai posté cette précision, c'est que j'ai passé récemment 2 jours à comprendre pourquoi il ne sortait pas du tableau les identifiants récupérés d'une base de données, et j'ai découvert sur le tard que c'était que mes valeurs récupérées d'Oracle était en chaine de caractères :?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

5 messages   •   Page 1 sur 1