Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Тонкости, или слон по клумбам..
Форумы портала PHP.SU » PHP » Программирование на PHP » Тонкости, или слон по клумбам..

Страниц (2): [1] 2 »
 

1. DeepVarvar - 02 Мая, 2009 - 07:20:02 - перейти к сообщению
Друзья, назрел очередной вопрос.. Есть две приблуды в РНР:
empty() и isset()...
PHP:
скопировать код в буфер обмена
  1. <?if (!empty($variable)) { print $variable; } ?>

PHP:
скопировать код в буфер обмена
  1. <?if (isset($variable)) { print $variable; } ?>

Оба кода эквивалентны.. Зачем ДВЕ функции с одинаковыми возможностями?
Я не говорю что чтото не нужно, я хочу понять зачем? Одна из них отличается по функционалу и/или возможностям? Обьясните где и в каких случаях рекомендовано использовать первую/вторую.. и почему... Не понял
2. Roler - 02 Мая, 2009 - 08:06:12 - перейти к сообщению
С помощью empty можно проверить ещё и просто на пустоту. Когда переменная объявлена, но пуста.
3. DeepVarvar - 02 Мая, 2009 - 10:29:37 - перейти к сообщению
а если будет так:
PHP:
скопировать код в буфер обмена
  1. <? if (isset($variable) && !empty($variable)) { print $variable; } ?>

выходит empty() проверяет только пустоту...
а isset() наличие неременной...
по идее интерпретатор не будет ругаца на empty() проверку необьявленной переменной, однако насколько я понял из соображений верного подхода юзать надо обе функции...
и unset()...
4. Гость - 02 Мая, 2009 - 10:35:28 - перейти к сообщению
DeepVarvar Если вас интересует пришла ли переменнае Get/Post методом то впринципе уже чувствутеся разница между этим функциями - если в форме не было поля abc то isset($_REQUEST['abc']) вернет false а елси поле было но оно было пустоен и пустое передалось то isset($_REQUEST['abc']) вернет true а empty($_REQUEST['abc']) вернет true
5. DeepVarvar - 02 Мая, 2009 - 10:40:22 - перейти к сообщению
я не привязан сейчас к конкретной необходимости использовать пример обсуждаемый нами тут.. а за ответы спасиб!!!
6. valenok - 02 Мая, 2009 - 11:21:11 - перейти к сообщению
Вопервых - будет ругаться за проверку на пустоту необъявленной переменной.
Во вторых null, 0, '', false проходят за пустые. isset проверяет наличие переменной, empty проверяет её значение.
7. DeepVarvar - 02 Мая, 2009 - 11:38:02 - перейти к сообщению
значит всетаки так:
PHP:
скопировать код в буфер обмена
  1. <? if (isset($variable) && !empty($variable)) { print $variable; } ?>
8. Roler - 02 Мая, 2009 - 12:52:40 - перейти к сообщению
DeepVarvar
Нет, не так. Используйте одну функцию.
9. Гость - 02 Мая, 2009 - 13:16:49 - перейти к сообщению
valenok Таки нет а именно переменная установленая в NULL и неопределенная переменная это одно и то же - можете проверить то есть unset($abc) это то же саоме что $abc=NULL по сей причине isset на переменную равную NULL вернет true
10. DeepVarvar - 02 Мая, 2009 - 13:23:05 - перейти к сообщению
хм... а в случае с проверкой $_GET['variable'] всетаки стоит использовать обе ф-ции...

1. пришел ли?
2. не пуст ли?

JustUserR, unset($abc) это то же саоме что $abc=NULL... т.е.?
CODE (text):
скопировать код в буфер обмена
  1. $abc='abc';
  2. unset($abc);
  3. if (isset($abc)) { print 'переменная не пропала!!!'; }
  4. else { print 'тютеньки!!!'; }
что выведет???
Я думаю пойдет по ветви else...
11. valenok - 02 Мая, 2009 - 13:53:12 - перейти к сообщению
JustUserRугу, про null это я что-то не в тему написал..
DeepVarvar да. напишет тютеньки.
12. DeepVarvar - 02 Мая, 2009 - 14:06:11 - перейти к сообщению
Я понимаю что "тютеньки", поэтому unset($abc) это НЕ то же самое что $abc=NULL...
13. valenok - 02 Мая, 2009 - 14:10:02 - перейти к сообщению
тоже самое.

$abc=null;
if (isset($abc)) { print 'переменная не пропала!!!'; }
else { print 'тютеньки!!!'; }

тоже выведет тютеньки
14. Ch_chov - 02 Мая, 2009 - 14:14:57 - перейти к сообщению
Цитата:
а в случае с проверкой $_GET['variable'] всетаки стоит использовать обе ф-ции...

Зачем ? Если ты точно знаешь, что значение переменной не может быть равно нулю или пустой строке, то удобней пользовать просто empty.
15. DeepVarvar - 02 Мая, 2009 - 14:22:23 - перейти к сообщению
Спасибо ребят!!! Вот где подводные камни!!! А ведь без глубокого и ВЕРНОГО понимания свойств ф-ций можно наваять ошибочную логику мозга сайта... ))))))

 

Powered by ExBB FM 1.0 RC1