6
votes

Est-ce que Calling Array () Sans arguments d'une utilisation?

de ma base de connaissances C ++, j'ai tendance à initialiser les tableaux en PHP en tapant:

$ foo = tableau ()
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' sans initialiser comme tableau, je suppose que non.

ps: l'amélioration des balises est vraiment bonne


4 commentaires

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 () 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.


7 Réponses :


1
votes

L'une ou l'autre méthode est parfaitement acceptable. Comme mentionné, cette pratique consistant à utiliser la construction 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"; . .


0 commentaires

1
votes

@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


0 commentaires

1
votes

Initialisation des variables avant utilisation est une bonne pratique. Même si ce n'est pas nécessaire.


0 commentaires

6
votes

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 $ foo vient? Est-ce vide ou y a-t-il quelque chose dans cela? `< / em>.

aussi il empêchera 'variable' $ A 'n'est pas défini notices ou argument non valide transmis à prévoyant au cas où vous n'édérez aucune valeur au tableau éléments.


1 commentaires

+1 Quand je vois quelque chose comme $ foo [45] = 'bar' La première chose à laquelle je pense est "Où est $ foo initialisé et qu'est-ce que c'est exactement?"



1
votes

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.


0 commentaires

1
votes

avec initialisation: xxx

sans initialisation: xxx

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> 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.


0 commentaires

1
votes

C'est une bonne pratique. Tôt ou tard, vous rencontrerez une situation où vous voudrez peut-être faire quelque chose comme ceci: xxx

qui lancera un avis, alors que: xxx

ne va pas.


1 commentaires

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.