Aktueller Standort: Startseite> Neueste Artikel> Wie entferne ich Variablen aus dem Hyperglobal -Array mit PHPs UnSet ()? Was sind die Vorsichtsmaßnahmen?

Wie entferne ich Variablen aus dem Hyperglobal -Array mit PHPs UnSet ()? Was sind die Vorsichtsmaßnahmen?

gitbox 2025-09-30

In PHP ist UnSet () eine häufig verwendete Funktion, um Elemente in Variablen oder Arrays zu zerstören. Wenn wir Hyperglobal -Arrays (z. B. $ _post , $ _get , $ _Session usw.) verarbeiten, müssen wir möglicherweise eine bestimmte Variable aus diesen Arrays entfernen. In diesem Artikel wird detailliert erklärt, wie Sie UnSet () verwenden, um Variablen aus Hyperglobal -Arrays zu entfernen und bei der Verwendung einige Vorsichtsmaßnahmen zu verweisen.

1. Grundnutzung von Unset ()

Unset () wird verwendet, um eine oder mehrere Variablen zu zerstören. Beim Entfernen von Array -Elementen können Sie UnSet () direkt verwenden, um den Schlüssel des Arrays anzugeben und zu löschen. Die grundlegende Syntax ist wie folgt:

 <span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>]);
</span></span>

Angenommen, wir haben ein $ _Post Hyperglobal-Array, das die vom Benutzer übermittelten Formulardaten enthält. Wenn wir ein bestimmtes Schlüsselwertpaar löschen möchten (z. B. Daten mit dem Schlüsselnamen Benutzername ), können wir dies tun:

 <span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>]);
</span></span>

2. Entfernen Sie Variablen aus dem Hyperglobal -Array

In PHP, $ _get , $ _post , $ _Session , $ _cookie usw. sind alle Hyperglobal-Arrays, die häufig zum Speichern von Benutzereingabedaten, Sitzungsinformationen oder browserbezogenen Variablen verwendet werden. Manchmal müssen wir bei der Bearbeitung einer Anforderung möglicherweise ein Element löschen. Hier sind einige gemeinsame Nutzungsszenarien:

2.1 Daten aus $ _get Array löschen

Wenn die Abfragezeichenfolge in der URL unnötige Parameter enthält, kann sie über UnSet () gelöscht werden. Zum Beispiel:

 <span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>]);
</span></span>

Dadurch wird der ID -Parameter von $ _get entfernt.

2.2 Sitzungsvariablen aus $ _Session löschen

Die Sitzungsverwaltung speichert normalerweise den Benutzeranmeldestatus und andere Informationen über das $ _Session -Array. Wenn sich der Benutzer anmeldet, können wir bestimmte Sitzungsvariablen löschen:

 <span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'user'</span></span><span>]);
</span></span>

Wenn Sie die gesamte Sitzung löschen möchten, können Sie Session_Destroy () verwenden.

2.3 Cookies von $ _cookie löschen

Obwohl UnSet () Set Cookies nicht direkt aus dem Browser löschen kann, können Sie es "löschen", indem Sie ein abgelaufenes Cookie einstellen:

 <span><span><span class="hljs-title function_ invoke__">setcookie</span></span><span>(</span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>() - </span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// aufstellen cookie Die Ablaufzeit ist vor einer Stunde</span></span><span>
</span></span>

Auf diese Weise löscht der Browser des Benutzers das Benutzername -Cookie.

3.. Dinge zu beachten

Obwohl Unset () ein sehr leistungsstarkes Werkzeug ist, gibt es einige Details, auf die Sie es bei der Verwendung achten müssen:

3.1 UnSet () kann das Hyperglobal -Array selbst nicht löschen

UnSet () kann ein Element in einem Hyperglobal -Array löschen, aber das gesamte Hyperglobal -Array nicht löschen. Zum Beispiel der folgende Code:

 <span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>);
</span></span>

Es löscht nicht das gesamte $ _post -Array, sondern zerstört einfach den Verweis auf das $ _post -Array. Das $ _post -Array selbst existiert immer noch und kann weiterhin auf die Elemente zugreifen.

3.2 Variablen nicht aus $ _globals Array nicht löschen

Das $ _globals -Array wird verwendet, um Variablen im globalen Bereich zuzugreifen und zu ändern. Da $ _globals Teil der internen Implementierung von PHP ist, kann UnSet () Elemente nicht aus $ _globals entfernen. Dies liegt daran, dass das $ _globals -Array eng an die globale Umgebung der PHP -Laufzeit gebunden ist.

3.3 UnSet () wirkt sich nicht auf die verwendete Referenz aus

Wenn eine Variable durch eine Referenz weitergeleitet wird, wird die Referenz nicht direkt betroffen, wenn das Array -Element mit UnSet () gelöscht wird. Zum Beispiel:

 <span><span><span class="hljs-variable">$a</span></span><span> = </span><span><span class="hljs-number">10</span></span><span>;
</span><span><span class="hljs-variable">$b</span></span><span> = &amp;</span><span><span class="hljs-variable">$a</span></span><span>;
</span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>);  </span><span><span class="hljs-comment">// Gelöscht $a Variable</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$b</span></span><span>;  </span><span><span class="hljs-comment">// Immer noch Ausgabe 10,Weil $b Immer noch zitiert $a</span></span><span>
</span></span>

V.

Seien Sie vorsichtig, wenn Sie UnSet () verwenden, um Array -Elemente in einer Foreach -Schleife zu löschen. Foreach erstellt eine Kopie des aktuellen Array -Elements, sodass das direkte Löschen des Array -Elements in der Foreach -Schleife den erwarteten Effekt nicht erzeugt. Zum Beispiel:

 <span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$_POST</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$key</span></span><span> == </span><span><span class="hljs-string">'username'</span></span><span>) {
        </span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>]);
    }
}
</span></span>

Obwohl unet () $ _post ['userername'] löscht, weil Foreach während der Schleife eine Kopie des Arrays erstellt hat, bleibt das $ _post -Array nach dem Ende der Schleife gleich. Um solche Probleme zu vermeiden, können Sie zunächst in Betracht ziehen, die Elemente zu sammeln, die Sie in ein Array löschen möchten, sie dann außerhalb der Schleife löschen oder mit Array_Filter () filtern.

5. Zusammenfassung

In PHP ist UnSet () eine einfache Möglichkeit, Variablen aus einem Hyperglobal -Array zu entfernen. Durch die korrekte Verwendung von UnSet () können Sie Hyperglobal -Daten effektiv verwalten, um sicherzustellen, dass nur die erforderlichen Daten im Array verbleiben. Sie sollten jedoch auch auf einige Details achten, wenn Sie es verwenden, um zu vermeiden, dass Variablen, die nicht gelöscht werden sollten, versehentlich geändert werden oder logische Fehler einführen sollten.