unset внутри foreach для $_POST

alexblade

Новичок
PHP:
if(isset($_POST)){foreach($_POST as &$key){unset($key);}}
но почемуто после этого ,
if (isset($_POST)){
foreach ($_POST as $key=>$value)
{echo "$key : $value \n";}}
без проблем выводит весь $_POST

как сделать чтоб сработал unset ?
 

alexblade

Новичок
я спросил помощи - почему не срабатывает unset, а не веду блог "а зачем" ;)

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8) работает

а вот мой форыч почемуто не хочет :( что я упустил ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Не надо так делать, так как $_POST будет массивом (пустым или нет) всегда. Соответственно if (isset($_POST)){} тоже всегда выполнится.
 

Фанат

oncle terrible
Команда форума
Многие люди путают форум со справочной службой.
Действительно, большая часть тем на форуме - это вопросы.
Но не стоит забывать, что это, все-таки форум. Место для дискуссий.
А не чей-то персональный блог или платная справка.
И вопрос автору темы - это абсолютно нормально.

Кроме того, это профессиональный форум.
Это означает, что его посещают профессиональные разработчики с большим опытом работы.
И если они задают вопрос - значит, есть причина.
Возможно, профессионал подозревает ошибку, но для ответа ему не хватает данных, которые автор вопроса не удосужился предоставить.

Отвечать на вопрос не обязательно. Но разумный человек не будет изображать капризную девочку, а ответит.
поскольку ему не трудно, а шанс избежать архитектурной ошибки и научиться чему-то полезному - велик.
 

fixmax

Новичок
Фанат, согласен. Я думаю что проще проверять на пустоту.
PHP:
if(!empty($_POST)){
	foreach($_POST as $key => $value){
		unset($_POST[$key]);
	}
}
if(!empty($_POST)){
	print_r($_POST);
}
 

Фанат

oncle terrible
Команда форума
fixmax проверять $_POST на пустоту столь же бессмысленно
Но этот код хотя бы будет работать, в отличие от предыдущего.

Автору темы, впрочем, он скорее всего не поможет.
 

alexblade

Новичок
Фанат
полностью согласен, просто код там детцкий не хотел тратить ваше время..

тфьу блин сбило с поталыги слово кей. разобрался спасибо.

а почему не коректно проверять на пустоту ? можно конечно вставить сразу "действие" в участке кода после сабмита. но что плохого если это в "общем" коде с проверкой
 

Adelf

Administrator
Команда форума
alexblade
POST всегда будет массивом. И если он пустой, foreach просто ни разу не выполнится. смысла в проверке - ноль.
 

Фанат

oncle terrible
Команда форума
Дело там не в пустоте. Если разработчику понадобилось очищать массив POST, то он что-то делает неправильно.
 

Adelf

Administrator
Команда форума
Фанат
Ну я могу представить такой случай. В фреймворке очищать его, чтобы разработчик работал только через фреймворковые хелперы, а не напрямую с $_POST.
Идея конечно отстойная, но имеет право на жизнь.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
очищать его, чтобы разработчик работал только через фреймворковые хелперы, а не напрямую с $_POST.
Точно. И руки за спиной связать, а то не дай бог, еще в код фреймворка залезет и его испортит.
 

alexblade

Новичок
alexblade
POST всегда будет массивом. И если он пустой, foreach просто ни разу не выполнится. смысла в проверке - ноль.
так а никто его и не пытается сделать не массиовм. и если он пустой правильно не должен выполнится следующий код, ансет в даном случае. иначе ансетится будет неопределеная переменая. я например не определяю все переменые в начале кода как в паскале.
соответствено у меня есть чтото в посте только после сабмита. и после успешного сабмита эти даные уже не нужны я их очищаю чтобы они второй раз не использовались.

Фанат , очищаю попричине как уже выше написал плюс до этого я вручную после сабмита и обработки поочереди все переменые обнулял но их много и хотел облегчить себе жизнь форычем.

1. можно и не очищать пост но при рефреше все даные опять юзаются. чтобы не удалять поимённо я обнулил форычем
2. можно и не проверять на присутсвие чегото в посте но тогда при например ансете чегото из поста если там ничего нет выдает ошибку. можно ансетить только после сабмита когда точно чтото есть но я ансечю в бщем коде с проверкой.

если честно так из ваших намёков и не понял криминала ни в проверке на пустоту ни в обнуление форычем.
я не эксперт в отличие от многих здесь присутсвующих (на форуме нет раздела для новичков просто) поэтому если вас не затруднит менее специализированным языком пояснить в чем криминал если он есть всетаки?
 
Сверху