web-dev-qa-db-fra.com

Est-il nécessaire d'initialiser / déclarer une variable en PHP?

Le but de cette question est d'acquérir uniquement des connaissances ou des informations pour moi et beaucoup comme moi.

Ma question est donc:

Est-il nécessaire d'initialiser/déclarer une variable avant une boucle ou une fonction?

Poser cette question est pour ma confusion parce que si j'initialise/déclare une variable avant ou non, mon code fonctionne toujours.

Je partage un code de démonstration pour ce que je veux dire:

$cars = null;

foreach ($build as $brand) {
     $cars .= $brand . ",";
}

echo $cars;

OR

foreach ($build as $brand) {
     $cars .= $brand . ",";
}

echo $cars;

Les deux morceaux de code fonctionnent de la même manière pour moi, est-il donc nécessaire d'initialiser/déclarer une variable au début?

28
Omer

PHP ne l'exige pas, mais c'est une bonne pratique de toujours initialiser vos variables.

Si vous n'initialisez pas vos variables avec une valeur par défaut, le moteur PHP effectuera une conversion de type en fonction de la façon dont vous utilisez la variable. Cela entraînera parfois un comportement inattendu.

Donc en bref, à mon avis, définissez toujours une valeur par défaut pour vos variables.

P.S. Dans votre cas, la valeur doit être définie sur "" (chaîne vide), au lieu de null, car vous l'utilisez pour concaténer d'autres chaînes.

Modifier

Comme d'autres (@ n-dru) l'ont noté, si vous ne définissez pas de valeur par défaut, un avis sera généré.

30
Alexander

Vous feriez mieux de lui affecter une chaîne vide $cars = '';, sinon (dans le cas où vous avez un rapport d'erreur), vous devriez voir un avis:

Remarquer: Variable indéfinie: voitures

PHP supposera qu'il était vide et la chaîne résultante sera la même, mais vous devriez préférer ne pas provoquer de surcharge supplémentaire due à un besoin de journalisation de cet avis. Donc performance - il est préférable de l'attribuer vide en premier.

En outre, en utilisant des éditeurs comme Aptana, etc., vous souhaiterez peut-être appuyer sur F3 pour voir d'où provient la variable donnée. Et il est si confortable de l'initialiser quelque part. Donc débogage - sage, il est également préférable d'avoir un lieu évident de naissance de la variable.

16
n-dru

Cela dépend: Si vous déclarez une variable en dehors d'une fonction, elle a une "portée globale", cela signifie qu'elle n'est accessible qu'en dehors d'une fonction.

Si une variable est déclarée à l'intérieur d'une fonction, elle a une "portée locale" et ne peut être utilisée qu'à l'intérieur de cette fonction. ( http://www.w3schools.com/php/php_variables.asp )

Mais il semble que la variable "voitures" que vous avez définie en dehors de la fonction fonctionne pour votre fonction même sans le mot-clé global ...

0
Nicole