de ma base de connaissances C ++, j'ai tendance à initialiser les tableaux em> en PHP en tapant: ps: l'amélioration des balises est vraiment bonne em> p>
$ foo = tableau () code>
Ou je peux apporter cette coutume de JavaScript, de toute façon, est celle d'une utilisation?
Comme il n'y a pas de problème à faire ceci:
$ foo [45] = 'bar' code> sans initialiser em> comme tableau, je suppose que non. p>
7 Réponses :
L'une ou l'autre méthode est parfaitement acceptable. Comme mentionné, cette pratique consistant à utiliser la construction code> code> est typiquement reportée d'une autre langue dans laquelle vous initialisez avant de remplir. Avec PHP, vous pouvez initialiser un tableau vide puis remplir plus tard, ou vous pouvez simplement établir un tableau par des affectations, telles que $ variablename [0] = "x"; p>. P>.
@petruz, c'est la meilleure façon de le faire, non seulement il vous évitera des messages d'erreur Nasty PHP indiquant que la fonction s'attend à ce que le paramètre soit un tableau, mais, IMHO, c'est la meilleure façon de rédiger un code. J'initialise une variable avant d'utiliser p>
Initialisation des variables avant utilisation est une bonne pratique. Même si ce n'est pas nécessaire. P>
Oui c'est. À tout le moins dans l'amélioration de la lisibilité du code (de sorte que vous n'avez pas besoin de vous demander 'Où est-ce que aussi il empêchera $ foo code> vient? Est-ce vide ou y a-t-il quelque chose dans cela? `< / em>. p>
'variable' $ A 'n'est pas défini code> notices ou
argument non valide transmis à prévoyant code> au cas où vous n'édérez aucune valeur au tableau éléments. p>
+1 Quand je vois quelque chose comme $ foo [45] = 'bar' code> La première chose à laquelle je pense est "Où est
$ foo code> initialisé et qu'est-ce que c'est exactement?"
J'ai eu des problèmes (dans les anciennes versions de PHP, n'avez pas essayé récemment) où j'agissais sur une matrice avec Array_Push ou quelque chose et PHP aboya-moi. En règle générale, il n'est pas nécessaire, mais cela peut être plus sûr, surtout si vous avez affaire à un code hérité; Peut-être que vous attendez de $ FOO pour être un tableau, mais c'est en fait un booléen? Les mauvaises choses s'ensuivent. P>
avec initialisation: sans initialisation: p> dans le premier cas, il est clair ce que vous voulez arriver si $ myboolcan est faux. Dans le second cas, ce n'est pas et PHP peut lancer un avertissement lorsque vous essayez d'utiliser $ myarray plus tard. Évidemment, c'est un cas simplifié, mais dans un cas complexe, le «si» peut être quelques lignes en bas et / ou non même exister jusqu'à ce que quelqu'un vienne et l'ajoute plus tard sans réaliser que la matrice n'a pas été initialisée. P> < P> Bien que non nécessaire, j'ai vu le manque d'initialisation entraînant des problèmes logiques non évidents, tels que ceux-ci dans des fonctions complexes qui ont été modifiés beaucoup au fil du temps. P> P>
C'est une bonne pratique. Tôt ou tard, vous rencontrerez une situation où vous voudrez peut-être faire quelque chose comme ceci: qui lancera un avis, alors que: p> ne va pas. P> p>
Droite, je suis tombé sur ceci avec des fonctions Array_ et foreach. Mais je suppose que si PHP est un langage aussi lâche, il peut aussi bien considérer que NULL est une matrice vide et poussez-la quand même.
Il est bon d'initialiser explicitement les tableaux et c'est un moyen rapide de vider un tableau.
Qu'en est-il des avantages de la performance lors de la définition avec
tableau () code> en premier?
@Dotweb: Je ne m'attendrais pas à des avantages de la performance de celui-ci (peut-être même une diminution de la performance (négligeable), si la matrice est créée, mais jamais jamais utilisé).
D'ACCORD. Il suffit de vous demander, car dans JavaScript, il y en a un.