El trato aquí es que tengo una matriz con 17 elementos. Quiero obtener los elementos que necesito durante un tiempo determinado y eliminarlos permanentemente de la matriz.
Aquí está el código:
$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']);
Sí, el código es feo, no es necesario golpear. ¿Cómo hago para que esto se vea mejor?
Parece que la función
extract()
sería una mejor herramienta para lo que está intentando hacer (asumiendo que extrae todas las claves / valores de una matriz y los asigna a variables con los mismos nombres que las claves en el ámbito local). Una vez que haya extraído el contenido, puede desarmarlo por completo$post
, asumiendo que no contiene nada más que desee.Sin embargo, para responder realmente a su pregunta, puede crear una matriz de las claves que desea eliminar y recorrer, desactivándolas explícitamente ...
$removeKeys = array('name', 'email'); foreach($removeKeys as $key) { unset($arr[$key]); }
... o podría apuntar la variable a una nueva matriz que tiene las claves eliminadas ...
... o pasar todos los miembros de la matriz a
unset()
...unset($arr['name'], $arr['email']);
fuente
Hay otra forma que es mejor que los ejemplos anteriores. Fuente: http://php.net/manual/en/function.unset.php
En lugar de recorrer toda la matriz y desarmar todas sus claves, puede desarmarlo una vez así:
Matriz de ejemplo:
$array = array("key1", "key2", "key3");
Para toda la matriz:
unset($array);
Para claves únicas:
unset($array["key1"]);
Para varias claves en una matriz:
unset($array["key1"], $array["key2"], $array["key3"] ....) and so on.
Espero que esto te ayude en tu desarrollo.
fuente
Entiendo que esta pregunta es antigua, pero creo que una forma óptima podría ser hacer esto:
$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 */ }
Ahora, puede usar $ name, $ email, ... desde cualquier lugar;)
NB: extract () no es seguro, por lo que está completamente fuera de discusión.
fuente