2015-06-20 5 views
14

Der Zweck dieser Frage ist, nur Wissen oder Informationen für mich und viele wie mich zu gewinnen.Ist es notwendig, Variablen in PHP zu initialisieren/deklarieren?

Also meine Frage ist:

Ist es notwendig, eine Variable vor einer Schleife oder eine Funktion zu initialisieren/deklarieren?

Diese Frage zu stellen ist für meine Verwirrung, denn ob ich Variable initialisiere/deklariere, bevor oder nicht funktioniert mein Code noch.

Ich teile einen Demo-Code für das, was ich meine eigentlich:

$cars = null; 

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

echo $cars; 

ODER

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

echo $cars; 

Beide Stück Code funktioniert bei mir gleich, so notwendig ist, um eine Variable zu initialisieren/Deklarieren am Anfang?

Antwort

18

PHP benötigt es nicht, aber es ist eine gute Übung, Ihre Variablen immer zu initialisieren.

Wenn Sie Ihre Variablen nicht mit einem Standardwert initialisieren, führt die PHP-Engine eine Typumwandlung aus, je nachdem, wie Sie die Variable verwenden. Dies führt manchmal zu unerwartetem Verhalten.

Also kurz gesagt, meiner Meinung nach, immer einen Standardwert für Ihre Variablen.

P.S. In Ihrem Fall sollte der Wert auf "" (leere Zeichenfolge) statt auf Null gesetzt werden, da Sie ihn zum Verketten anderer Zeichenfolgen verwenden.

bearbeiten

Wie andere (@ n-dru) haben festgestellt, wenn Sie nicht setzen einen Standardwert ein Hinweis generiert werden.

+0

Null und leer „“ ... sind sie nicht gleich? – Omer

+3

Nein, sie sind nicht gleich. Einer ist vom Typ String, der andere ist null. Sie können den Unterschied sehen, wenn Sie mit der Funktion is_null herumspielen. 'is_null ($ null) // Gibt" true "zurück und generiert eine Notiz' 'leer (" ") // Gibt true zurück – Alexander

+0

Also meinst du NULL = Nicht zugewiesen und" "= ein leerer STRING? – Omer

10

Es wäre besser, weisen Sie einen leeren String $cars = '';, sonst (falls Sie die Fehlerberichterstattung auf haben) können Sie eine Mitteilung sehen sollten:

Hinweis: Undefined variable: Autos

PHP wird davon ausgehen, dass es leer war und die resultierende Zeichenfolge wird die gleiche sein, aber Sie sollten es vorziehen, keinen zusätzlichen Aufwand zu verursachen, der durch das Protokollieren dieser Benachrichtigung verursacht wird. Also Leistung -wise ist es besser, es zuerst leer zuzuweisen.

Mit Editoren wie Aptana, etc, möchten Sie vielleicht F3 drücken, um zu sehen, woher die gegebene Variable stammt. Und es ist so angenehm, es irgendwo zu initialisieren. So Debugging -wise ist es auch besser, offensichtlichen Ort der Variablen Geburt zu haben.

+3

Dieses Gefühl, wenn Sie jemand anderes Skript bearbeiten und es wird klar, dass sie nicht "E_ALL" aktiviert haben ... –

1

Es kommt darauf an: Wenn Sie eine Variable außerhalb einer Funktion deklarieren, hat sie einen "globalen Gültigkeitsbereich", dh sie kann nur außerhalb einer Funktion aufgerufen werden.

Wenn eine Variable innerhalb einer Funktion deklariert ist, hat sie einen "lokalen Gültigkeitsbereich" und kann nur innerhalb dieser Funktion verwendet werden. (http://www.w3schools.com/php/php_variables.asp)

Aber es scheint, dass die Variable „Autos“, die Sie außerhalb der Funktion definiert funktioniert auch für Ihre Funktion ohne das Schlüsselwort global ...

+1

erstens beachten Sie, dass es keine Funktion im Code gebucht bekannt gegeben. Es gibt also keinen Spielraum für ein globales Schlüsselwort. Sie sollten verstehen, was Sie gefragt werden, bevor Sie eine Frage beantworten. Auch was du geschrieben hast, ist ziemlich irreführend. Ich würde Sie bitten, auf http://php.net/manual/en/language.variables.basics.php zu verweisen, um PHP-Variablen zu verstehen. – Blip