Der folgende PHP-Code wird ausgegeben 3
.
function main() {
if (1) {
$i = 3;
}
echo $i;
}
main();
Aber der folgende C-Code wird einen Kompilierfehler auslösen.
void main() {
if (1) {
int i = 3;
}
printf("%d", i);
}
Variablen in PHP sind also nicht streng blockbezogen? In PHP können im inneren Block definierte Variablen im äußeren Block verwendet werden?
PHP hat nur Funktionsumfang – Kontrollstrukturen wie z if
keinen neuen Geltungsbereich einführen. Es macht jedoch auch nichts aus, wenn Sie Variablen verwenden, die Sie nicht deklariert haben. $i
wird außerhalb von nicht existieren main()
oder wenn die if-Anweisung fehlschlägt, aber Sie können sie trotzdem frei echoen.
Wenn Sie das error_reporting von PHP so eingestellt haben, dass es Benachrichtigungen enthält, wird es eine ausgeben E_NOTICE
Error zur Laufzeit wenn Sie versuchen, eine nicht definierte Variable zu verwenden. Also wenn du hättest:
function main() {
if (rand(0,1) == 0) {
$i = 3;
}
echo $i;
}
Der Code würde gut laufen, aber einige Ausführungen geben ‘3’ zurück (wenn die if
gelingt), und einige werden ein erhöhen E_NOTICE
und Echo nichts, wie $i
wird nicht im Geltungsbereich der Echo-Anweisung definiert.
Außerhalb der Funktion, $i
wird nie definiert (weil die Funktion einen anderen Gültigkeitsbereich hat).
Für mehr Information: http://php.net/manual/en/language.variables.scope.php
Dies ist eigentlich keine Frage, wenn Sie sie bereits selbst beantwortet haben.
– Lotus Notes
24. Mai 2010 um 0:21 Uhr
@Byron – Ich möchte das nur bestätigen. Es ist seltsam für mich, wer von C zu PHP gekommen ist.
– Powerboy
24. Mai 2010 um 0:25 Uhr
warum downvoten? Frage finde ich gut
– Andrej
24. Mai 2010 um 0:30 Uhr
Es wird ermutigt, Ihre eigenen Fragen zu beantworten. Sie können eine Frage mit einer Antwort stellen (Sie müssen jedoch eine Antwort posten) als eine Form des Wissensaustauschs als stackoverflow.com/help/self-answer
– KaizenCoder
7. August 2016 um 2:38 Uhr