PHP
Referenzliste
extract
Array-Funktionen
Befehl:
int extract ( array $var_array [, int $extract_type [, string $prefix]] )
Parameter-Liste:
Beschreibung | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ein assoziatives Array. Die Funktion behandelt Schlüssel als Variablennamen und Werte als Variablenwerte. Für jedes Paar Schlüssel/Wert wird - abhängig von den Parametern extract_type und prefix - eine Variable in der aktuellen Symboltabelle eingetragen.Sie müssen ein assoziatives Array verwenden, da ein numerisch indiziertes Array zu keinem Ergebnis führen wird, außer Sie benutzen EXTR_PREFIX_ALL oder EXTR_PREFIX_INVALID . | |||||||||||||||||||
Die Art, wie ungültige/numerische Schlüssel und Kollisionen behandelt werden, wird durch extract_type bestimmt. Die folgenden Werte sind erlaubt:
extract_type nicht spezifiziert, so wird EXTR_OVERWRITE angenommen. | |||||||||||||||||||
Die Format-Codes |
Rückgabewerte:
extract() gibt die Anzahl erfolgreich in die Symboltabelle importierter Variablen zurück.
Beschreibung:
Die Funktion extract() erzeugt aus jedem einzelnen Element eines Arrays (var_array) eine Variable. Der Name der Variablen entsteht aus dem Schlüssel des jeweiligen Elements, der Wert der Variablen entspricht dem Wert des Elements.
Abhängig vom Wert des Parameters extract_type wird der Name der Variablen nach folgenden Regeln gebildet:
EXTR_OVERWRITE: Wenn der zu erzeugende Variablennamen schon existiert, wird die vorhandene Variable überschrieben. Diese Option ist der Standardwert der Funktion.
EXTR_SKIP: Wenn der zu erzeugende Variablennamen schon existiert, wird die vorhandene Variable nicht überschrieben.
EXTR_PREFIX_SAME: Wenn der zu erzeugende Variablennamen schon existiert, wird der Präfix prefix auf die betroffene Variable angewendet.
EXTR_PREFIX_ALL: Alle Variablen werden zur Vermeidung von Namenskollisionen mit dem Präfix prefix ausgestattet. Der Variablenname besteht aus dem Präfix, einem Unterstrich und dem Schlüssel des assoziativen Arrays.
EXTR_PREFIX_INVALID: Nur sonst ungültige Variablennamen werden mit dem Präfix prefix ausgestattet. Wurde in PHP 4.0.5 eingeführt.
EXTR_IF_EXISTS: Die Variable wird nur dann überschrieben, wenn sie bereits in der aktuellen Symboltabelle existiert. Wurde in PHP 4.2.0 eingeführt.
EXTR_PREFIX_IF_EXISTS: Es werden nur Variablennamen mit Präfix erstellt, falls eine bereits vorhandene Variable ohne Präfix der selben Version in der Symboltabelle existiert. Wurde in PHP 4.2.0 eingeführt.
EXTR_REFS: Die Variablen werden als Referenzen extrahiert. Dabei referenzieren die Werte der importierten Variablen auf die Werte von var_array. Sie können diesen Parameter auch mit einem anderen extract_type kombinieren. Wurde in PHP 4.3.0 eingeführt.
Um möglichen Fehlern aus dem Weg zu gehen, ist es ratsam, die Option EXTR_PREFIX_ALL zu nutzen.
Abhängig vom Wert des Parameters extract_type wird der Name der Variablen nach folgenden Regeln gebildet:
EXTR_OVERWRITE: Wenn der zu erzeugende Variablennamen schon existiert, wird die vorhandene Variable überschrieben. Diese Option ist der Standardwert der Funktion.
EXTR_SKIP: Wenn der zu erzeugende Variablennamen schon existiert, wird die vorhandene Variable nicht überschrieben.
EXTR_PREFIX_SAME: Wenn der zu erzeugende Variablennamen schon existiert, wird der Präfix prefix auf die betroffene Variable angewendet.
EXTR_PREFIX_ALL: Alle Variablen werden zur Vermeidung von Namenskollisionen mit dem Präfix prefix ausgestattet. Der Variablenname besteht aus dem Präfix, einem Unterstrich und dem Schlüssel des assoziativen Arrays.
EXTR_PREFIX_INVALID: Nur sonst ungültige Variablennamen werden mit dem Präfix prefix ausgestattet. Wurde in PHP 4.0.5 eingeführt.
EXTR_IF_EXISTS: Die Variable wird nur dann überschrieben, wenn sie bereits in der aktuellen Symboltabelle existiert. Wurde in PHP 4.2.0 eingeführt.
EXTR_PREFIX_IF_EXISTS: Es werden nur Variablennamen mit Präfix erstellt, falls eine bereits vorhandene Variable ohne Präfix der selben Version in der Symboltabelle existiert. Wurde in PHP 4.2.0 eingeführt.
EXTR_REFS: Die Variablen werden als Referenzen extrahiert. Dabei referenzieren die Werte der importierten Variablen auf die Werte von var_array. Sie können diesen Parameter auch mit einem anderen extract_type kombinieren. Wurde in PHP 4.3.0 eingeführt.
Um möglichen Fehlern aus dem Weg zu gehen, ist es ratsam, die Option EXTR_PREFIX_ALL zu nutzen.
Aktiv in Version:
(PHP 4, PHP 5, PHP 7)
Hinweis:
Hinweis:
Wenn Sie register_globals aktiviert haben, Sie extract() auf $_FILES anwenden und Sie
EXTR_SKIP
angeben, könnten Sie über das Ergebnis überrascht sein.Warnung:
Warnung:
Verwenden Sie extract() nicht für nicht vertrauenswürdige Daten wie Benutzereingaben (d.h. $_GET, $_FILES, ...). Wenn Sie dies tun, z.B. weil Sie alten Code, der sich auf register_globals verlässt, vorübergehend ausführen wollen, so stellen Sie sicher, dass Sie einen nicht-überschreibenden
extract_type
-Wert wie EXTR_SKIP
verwenden und seien Sie sich bewusst, dass Sie die Daten in der selben Reihenfolge importieren sollen, die in variables_order in der php.ini angegeben wurde.Dies ist keine empfohlene Vorgehensweise; es ist nur der Vollständigkeit halber hier dokumentiert. Die Nutzung von register_globals wird nicht mehr empfohlen und das Aufrufen von extract() auf nicht vertrauenswürdigen Daten wie $_FILES ist, wie oben beschrieben, ein potenzielles Sicherheitsrisiko. Wenn Sie auf dieses Ergebnis stossen, bedeutet das, dass Sie mindestens zwei schlechte Codierungs-Praktiken benutzen.
Siehe auch:
extract() - Beispiel:
Eingabe:
<?php /* Annahme: $var_array ist ein von wddx_deserialize zurückgegebenes Array */ $groesse = "gross"; $var_array = array("farbe" => "blau", "groesse" => "mittel", "form" => "Kugel"); extract($var_array, EXTR_PREFIX_SAME, "wddx"); echo "$farbe, $groesse, $form, $wddx_groesse\n"; ?>
Ausgabe:
blau, gross, Kugel, mittel
Beschreibung:
Beschreibung | |
---|---|
4.3.0 | EXTR_REFS wurde hinzugefügt. |
4.2.0 | EXTR_IF_EXISTS und EXTR_PREFIX_IF_EXISTS wurden hinzugefügt. |
4.0.5 | Diese Funktion gibt jetzt die Anzahl der extrahierten Variablen zurück. EXTR_PREFIX_INVALID wurde hinzugefügt. EXTR_PREFIX_ALL schliesst numerische Variablen ebenfalls ein. |
Array-Funktionen