Очистка массива _POST полностью
Я хочу, чтобы содержимое массива $_POST полностью, все примеры, которые я вижу в Интернете, выглядят следующим образом:
if (count($_POST) > 0) {
foreach ($_POST as $k=>$v) {
unset($_POST[$k]);
}
}
Скажите пожалуйста, этот вариант будет не лучше? (С точки зрения экономии ресурсов)
if (count($_POST) > 0) {
$_POST = array();
}
или нет?
Ответы
Ответ 1
Да, это нормально. $_POST
- это еще одна переменная, за исключением того, что она имеет (super) глобальную область.
$_POST = array();
... будет достаточно. Цикл бесполезен. Вероятно, лучше сохранить его как массив, а не отключить, если другие файлы пытаются его прочитать и считая, что это массив.
Ответ 2
Чтобы отключить переменную $_POST
, переопределите ее как пустой массив:
$_POST = array();
Ответ 3
Это может показаться чересчур неудобным, но вам, вероятно, лучше отключить один элемент за раз, а не весь массив $_POST. Вот почему: Если вы используете объектно-ориентированное программирование, у вас может быть один класс, который использует $_POST ['alpha'], а другой класс использует $_POST ['beta'], и если вы отключите массив после первого использования, он будет void его использование в других классах. Чтобы быть в безопасности и не стрелять себе в ногу, просто введите небольшой метод, который отключит элементы, которые вы только что использовали: например:
private function doUnset()
{
unset($_POST['alpha']);
unset($_POST['gamma']);
unset($_POST['delta']);
unset($_GET['eta']);
unset($_GET['zeta']);
}
Просто вызовите метод и отмените только те суперглобальные элементы, которые были переданы переменной или аргументу. Тогда другие классы, которые могут нуждаться в суперглобальном элементе, могут использовать их.
Однако, вы разумны, чтобы отключить суперглобалы, как только они был передан инкапсулированному объекту.
Ответ 4
Вы можете использовать комбинацию unset()
и инициализировать:
unset($_POST);
$_POST = array();
Или в одном выражении:
unset($_POST) ? $_POST = array() : $_POST = array();
Но почему вы хотите это сделать?
Ответ 5
Чтобы ответить "почему" кто-то может его использовать, у меня возникло искушение использовать его, поскольку у меня были значения $_POST, сохраненные после обновления страницы или при переходе с одной страницы на другую. Мой смысл подсказывает мне, что это не очень хорошая практика, но тем не менее она работает.