Есть ли удобная замена конструкции... if(@$v) $v=...

Граждане.
давайте без этого вот.

есть что сказать - говори. а в гугл сам иди. или на какие другие буквы.
 
*****
Эммм...Помоему этот вопрос ну ни как не относится к теме топа.
Ну ведь реально видно, что пост для него - это что то вроде гарантии, какие данные передал с своего сайта, такие и получил. Что мне теперь делать? Рассказывать ему что ПОСТ можно самому формировать?
 
cDLEON
Ну уж поясните вышесказанное, т.к
PHP:
<?
echo'
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
  <input type="text" name="test" />
  <input type="submit" name="s" />
</form>';

if(isset($_POST['test'])){
	echo 'определена';
	echo '<br />';
	echo gettype($_POST['test']);
	echo '<br />';
	echo '<br />';
}

if(@$_POST['test']){
	echo 'определена и заполнена';
	echo '<br />';
	echo gettype($_POST['test']);
}
выводит
"определена
string",
если отправить данные ничего не введя и
"определена
string

определена и заполнена
string",
если все-таки что-то ввести.., т.о второе условие наглядно включает первое.
Popoff, к примеру, не поленился поделиться (и показать свои знания), за что я ему очень благодарен, а посылать куда-то могут почти все.
 
Ноябрь измени инпут тайп на чекбокс и не отметь его

-~{}~ 27.11.07 21:36:

ох срань, я облажался

-~{}~ 27.11.07 21:38:

а нет. просто ничё не напишет
 
да уж..:))
именно, не пишет, в обоих случаях переменная неопределена, и опять второе включает первое.

-~{}~ 27.11.07 20:43:

так что проверять данные сначала isset, а затем empty ИМХО бред. Все время empty.
 
Ноябрь

@ подавляет вывод ошибок и только..
а ты должен видеть все возможные ошибки..

далее..

isset специально предназначено для проверки переменной на определенность

empty только на содержимое, и если она не выдает ошибку, то это не значит что ее надо применять везде. она применима только в том случае, если тебе неважно како тип данных внутри переменной: "", 0, "0" и что там еще есть..

иначе ты рискуешь нарваться на $_POST['field'] === 0; которое будет проставлено в форме. empty выдаст true. Но "0" тоже нужное иногда значение.
 
Breeze
согласен
кстати, а сможешь написать код, в котором поведение @ и empty будет отличаться?
 
PHP:
<?
echo'
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
  <input type="text" name="test" />
  <input type="submit" name="s" />
</form>';

if(!@$_POST['test']){
	echo 'не заполнена';
	echo '<br />';
}

if(empty($_POST['test'])){
	echo 'не заполнена по феншую';
}
в чем отличия?
 
> @ подавляет вывод ошибок и только..

ничего подобного. собака подавляет вывод предупреждений. в случае же ошибок пых просто делает себе сэпукку и никакое домашнее животное не в силах спасти его бренное тело от падения на твердь пятисотой ошибки...
 
cDLEON

то, что собака подавляет описано в мануале в секции Error Control Operators. что-то я там не вижу слова ВЕСЬ.

Ноябрь

в этой же секции написан Warning который тебе надо читать до просветления. Если же ты решишь отмазаться, что английский не знаешь, то не принимается.
 
dark-demon
пока писал, ты уже отредактировал :)

то, что пых с собакой молчит как Герасим -- зло собаки, вот что топикстартер должен понять

ЗЫ: я был бы не против, если бы empty выдавал notice на отсутствующую переменную
 
присоединяюсь к вопросу Ноябрь. собака - зло, как зомбированные в один голос, а обоснований ноль. а чем это хуже в контексте, который привёл Ноябрь?
 
Я уже все объяснил.
Повторяю ещё раз.
В данном конкретном случае, когда собака затыкает нотис про андефайнед, это не зло, а просто непонимание, о чем идет речь.
Собака используется, как затычка от нотиса.
То есть, программист полагает, будто разработуиеи пхп сделали этот нотис для того, чтобы ему просто было не скучно.
 
tf ниадного низнаю. даже с русским плоха справляюсь. а чем вызван интерес?

-~{}~ 27.11.07 23:59:

То есть, программист полагает, будто разработуиеи пхп сделали этот нотис для того, чтобы ему просто было не скучно.
а по большому счёту, empty() не затыкает нотис???
 
если программист использует её, чтобы заткнуть нотис, то затыкает
если в алгоритме стоит проверка на не пустоту, то емпти реализует часть алгоритма.

Как я уже говорил раньше, но до многих не доходит - обращение к любой переменной в программе не должно вызывать нотис.
вот конечная цель всех телодвижений.
если ты определил все переменные перед использованием - ты вылечил болезнь.
Если ты поставил собаку - ты вылечил симптом.
 
berkut
читаем 2-3 страницу.
По второму кругу уже обсуждение пошло.
 
Сверху