Дело в том, что у меня есть массив из 17 элементов. Я хочу получить нужные мне элементы на определенное время и навсегда удалить их из массива.
Вот код:
$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']);
Да, код уродливый, не надо бить. Как мне сделать это лучше?
Похоже, функция
extract()
будет лучшим инструментом для того, что вы пытаетесь сделать (при условии, что она извлекает все ключи / значения из массива и назначает их переменным с теми же именами, что и ключи в локальной области). После того, как вы извлекли содержимое, вы можете удалить все$post
, если оно не содержит ничего, что вам нужно.Однако, чтобы на самом деле ответить на ваш вопрос, вы можете создать массив ключей, которые хотите удалить, и пройти через цикл, явно отключив их ...
$removeKeys = array('name', 'email'); foreach($removeKeys as $key) { unset($arr[$key]); }
... или вы можете указать переменную на новый массив, у которого удалены ключи ...
$arr = array_diff_key($arr, array_flip($removeKeys));
... или передать все элементы массива в
unset()
...unset($arr['name'], $arr['email']);
источник
Есть другой способ, который лучше приведенных выше примеров. Источник: http://php.net/manual/en/function.unset.php
Вместо того, чтобы перебирать весь массив и отключать все его ключи, вы можете просто сбросить его один раз следующим образом:
Пример массива:
$array = array("key1", "key2", "key3");
Для всего массива:
unset($array);
Для уникальных ключей:
unset($array["key1"]);
Для нескольких ключей в одном массиве:
unset($array["key1"], $array["key2"], $array["key3"] ....) and so on.
Надеюсь, это поможет вам в вашем развитии.
источник
Я понимаю, что это старый вопрос, но я думаю, что оптимальным способом может быть это:
$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 */ }
Теперь вы можете использовать $ name, $ email, ... откуда угодно;)
NB: extract () небезопасен, поэтому о нем не может быть и речи!
источник