Der Deal hier ist, dass ich ein Array mit 17 Elementen habe. Ich möchte die Elemente, die ich für eine bestimmte Zeit benötige, abrufen und dauerhaft aus dem Array entfernen.
Hier ist der Code:
$name = $post['name'];
$email = $post['email'];
$address = $post['address'];
$telephone = $post['telephone'];
$country = $post['country'];
unset($post['name']);
unset($post['email']);
unset($post['address']);
unset($post['telephone']);
unset($post['country']);
Ja, der Code ist hässlich, keine Notwendigkeit zu schlagen. Wie mache ich das besser?
Es sieht so aus, als
extract()
wäre die Funktion ein besseres Werkzeug für das, was Sie tun möchten (vorausgesetzt, sie extrahiert alle Schlüssel / Werte aus einem Array und weist sie Variablen mit denselben Namen wie die Schlüssel im lokalen Bereich zu). Nachdem Sie den Inhalt extrahiert haben, können Sie den gesamten Inhalt deaktivieren$post
, vorausgesetzt, er enthält nichts anderes, was Sie möchten.Um Ihre Frage tatsächlich zu beantworten, können Sie jedoch ein Array der Schlüssel erstellen, die Sie entfernen und durchlaufen möchten, und sie explizit deaktivieren ...
$removeKeys = array('name', 'email'); foreach($removeKeys as $key) { unset($arr[$key]); }
... oder Sie können die Variable auf ein neues Array verweisen, bei dem die Schlüssel entfernt wurden ...
... oder übergeben Sie alle Array-Mitglieder an
unset()
...unset($arr['name'], $arr['email']);
quelle
Es gibt einen anderen Weg, der besser ist als die obigen Beispiele. Quelle: http://php.net/manual/en/function.unset.php
Anstatt das gesamte Array zu durchlaufen und alle Schlüssel zu deaktivieren, können Sie es einfach einmal wie folgt deaktivieren:
Beispielarray:
$array = array("key1", "key2", "key3");
Für das gesamte Array:
unset($array);
Für eindeutige Schlüssel:
unset($array["key1"]);
Für mehrere Schlüssel in einem Array:
unset($array["key1"], $array["key2"], $array["key3"] ....) and so on.
Ich hoffe das hilft dir bei deiner Entwicklung.
quelle
Ich verstehe, dass diese Frage alt ist, aber ich denke, ein optimaler Weg könnte sein, dies zu tun:
$vars = array('name', 'email', 'address', 'phone'); /* needed variables */ foreach ($vars as $var) { ${$var} = $_POST[$var]; /* create variable on-the-fly */ unset($_POST[$var]); /* unset variable after use */ }
Jetzt können Sie $ name, $ email, ... von überall aus verwenden;)
NB: extract () ist nicht sicher, kommt also nicht in Frage!
quelle