PHP der gleiche Name in foreach als äußere Scope verursacht überschreiben

8

Also habe ich heute ein Formular erstellt und zufällig einer Variablen den gleichen Namen gegeben wie ein später verwendeter Name in einer foreach-Schleife. Zu meiner Überraschung hat die Erklärung der foreach-Schleife die vorherige Deklaration der Variablen überschrieben.

Das klingt für mich ziemlich merkwürdig, da ich erwartet hatte, dass der Geltungsbereich von as $value => $a den Geltungsbereich der beiden Variablen auf die foreach -Schleife beschränkt.

Das passiert:

%Vor%

Das habe ich erwartet:

%Vor%

Dasselbe passiert, wenn ich $a als Schlüssel von foreach loop verwende, erschreckender war dieses Juwel:

%Vor%

hat das $b -Array an Ort und Stelle überschrieben, aber immer noch über seine Mitglieder geloopt.

Alles in allem scheint es ein wenig skurril. Meine Frage, fragt wo genau würde ich die Dokumentation finden, die angibt, dass dieses Verhalten erwartet wird?

    
EdgeCaseBerg 14.11.2013, 17:51
quelle

2 Antworten

9

Der Umfang in PHP ist auf globaler oder Funktionsebene, es gibt keinen Blockbereich, siehe Ссылка

    
Matteo Tassinari 14.11.2013, 17:53
quelle
1

Nur Funktionen erstellen einen neuen Bereich. Der durch geschweifte Klammern gebildete Blockbereich bildet keinen neuen Bereich. In Ihrem Beispiel befinden Sie sich im globalen Bereich.

    
litechip 14.11.2013 17:56
quelle

Tags und Links