[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: isset или empty?
XCross
Как писать правильно?
if(empty($_GET['message']))
{
.....
}

или


if(isset($_GET['message']))
{
......
}




Спустя 5 минут, 10 секунд (3.04.2011 - 15:30) inpost написал(а):
kmaks
Из разряда: как правильно писать:
mysql_fetch_assoc();
или
print_r();

Я это к тому, что каждому своё место, существует или пустое - по ситуации.

Спустя 51 секунда (3.04.2011 - 15:31) sharki написал(а):
Всё в дном =)
if(isset($_GET['message']) and !empty($_GET['message'])) {
....
}

Спустя 4 минуты, 46 секунд (3.04.2011 - 15:36) Snus написал(а):
Если написать
if(empty($_POST['test'])) echo 'empty test';

И при этом $_POST test не будет объявлен, то в нотисе выдаст ошибку :)
Так что, sharki самый верный вариант написал.

Спустя 1 минута, 51 секунда (3.04.2011 - 15:38) neadekvat написал(а):
Можно и
if(empty(@$_POST['test'])) echo 'empty test';

Нотайсов не будет.
Или
$_POST['test'] = isset($_POST['test']) ? $_POST['test'] : null;
if(empty($_POST['test'])) echo 'empty test';

Нотайстов тоже не будет.

С @ надо быть аккуратным.

Спустя 2 минуты, 9 секунд (3.04.2011 - 15:40) Snus написал(а):
neadekvat
Все правильно, только собачек советовать я бы не стал.
Отсюда вердикт - изсет нужно использовать для объявления переменных, а эмпти для проверки на 0 и '' smile.gif

Спустя 7 часов, 53 минуты, 13 секунд (3.04.2011 - 23:33) kirik написал(а):
Ребят, почему вы решили что empty будет выдавать нотис, если переменная не определена? user posted image

/*1*/ error_reporting(E_ALL);
/*2*/ var_dump($test1);
/*3*/ var_dump(empty($test2));
/*4*/ var_dump(isset($test3));

в комментах номера строчек. Получаем:
Notice: Undefined variable: test1 in /home/kirik/Www/index.php on line 2
NULL
bool(true)
bool(false)

тоесть ошибка тут одна, и это когда не объявленная переменная используется просто так..

Спустя 3 минуты, 49 секунд (3.04.2011 - 23:37) neadekvat написал(а):
kirik, так это же еще лучше smile.gif Промазали, да.

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

Спустя 3 минуты, 29 секунд (3.04.2011 - 23:41) quickxyan написал(а):
помню когда-то тут уже была такая тема.
для того, чтобы узнать есть ли переменная надо пильзоватся isset, если проверить её на содержимое, то empty

Спустя 16 минут, 10 секунд (3.04.2011 - 23:57) kirik написал(а):
Вы почитайте про особенноести isset:
$test1 = null; // мы определили переменную <----------??????-------------
echo "NULL\n"; // |
var_dump(empty($test1)); // получаем true - она пустая |
var_dump(isset($test1)); // получаем false - т.е. она не определена!?? /

Спустя 3 минуты, 43 секунды (4.04.2011 - 00:00) neadekvat написал(а):
kirik, php не заставит нас скучать.. Ладно хоть при значении '', а не null, работает как надо.

Спустя 4 часа, 20 минут, 30 секунд (4.04.2011 - 04:21) mrpsyx написал(а):
слушай sharki, он правильно тебе подсказал, я кстати тоже так делаю...

Спустя 3 минуты, 19 секунд (4.04.2011 - 04:24) kirik написал(а):
Цитата (mrpsyx @ 3.04.2011 - 20:21)
он правильно тебе подсказал, я кстати тоже так делаю

Топик почитайте... В ответе sharki получается "масло масляное".

Спустя 10 минут, 39 секунд (4.04.2011 - 04:35) mrpsyx написал(а):
да все нормально там.... почитал и ничего не нашел, там рассматривался вопрос о том не выдаст ли notice:

<?php

print empty($test); // выдает 1


так что можно isset и не использовать

Спустя 7 минут, 15 секунд (4.04.2011 - 04:42) kirik написал(а):
Цитата (mrpsyx @ 3.04.2011 - 20:21)
слушай sharki, он правильно тебе подсказал, я кстати тоже так делаю...

Цитата (mrpsyx @ 3.04.2011 - 20:35)
почитал и ничего не нашел

Цитата (mrpsyx @ 3.04.2011 - 20:35)
так что можно isset и не использовать

Отказываюсь вас понимать smile.gif

Спустя 2 минуты, 20 секунд (4.04.2011 - 04:44) mrpsyx написал(а):
ну ладно....

Спустя 32 минуты, 56 секунд (4.04.2011 - 05:17) ИНСИ написал(а):
вообще, можно и так сделать:

if($_GET['message'] && $_GET['message'] <> '')
echo $_GET['message'];
else
echo 'empty';

Спустя 4 минуты, 4 секунды (4.04.2011 - 05:21) kirik написал(а):
Цитата (velbox @ 3.04.2011 - 21:17)
вообще, можно и так сделать

Да чтож вы издеваетесь сегодня все? smile.gif

Спустя 4 минуты, 30 секунд (4.04.2011 - 05:26) ИНСИ написал(а):
Цитата
Да чтож вы издеваетесь сегодня все?

Нет конечно же smile.gif Я просто для разнообразия написал .... По поводу ноутисов с тобой полностью согласен.

Спустя 26 минут, 24 секунды (4.04.2011 - 05:52) glock18 написал(а):
kirik
Цитата (velbox @ 4.04.2011 - 02:26)
Нет конечно же  Я просто для разнообразия написал .... По поводу ноутисов с тобой полностью согласен.


и продолжают издеваться smile.gif

по теме:
почитали бы хоть что такое empty, и не городили бы огород из isset + !empty. использовать их в одном месте - все равно, что масло масленое, как правильно сказал kirik - по ушам за такое надо давать.

Спустя 59 минут, 6 секунд (4.04.2011 - 06:51) kirik написал(а):
Цитата (glock18 @ 3.04.2011 - 21:52)
по ушам за такое надо давать

Эх, Василий, твои бы слова да в дело!... И вот за такое тоже $_GET['message'] <> '' smile.gif

Спустя 1 час, 47 минут, 39 секунд (4.04.2011 - 08:39) linker написал(а):
array_key_exists() и не мучайте себе голову. Через $_GET или $_POST значение null не передать, а потому бояться казуса
$a = null;
isset($a);
не стоит. Но нулевое значение или пустое передать можно и тогда используя empty() можно нарваться на логическую ошибку.

Спустя 50 минут, 23 секунды (4.04.2011 - 09:29) Игорь_Vasinsky написал(а):
ВОт так.....

запрос может быть передан, но может быть пустым, и тогда истены

empty($_GET['message'])

и
isset($_GET['message'])


isset - указывает на существование запроса
empty - на то что запрос есть, но пустой.

Совершенно разные вещи..

Спустя 1 час, 4 минуты, 35 секунд (4.04.2011 - 10:34) ИНСИ написал(а):
Цитата
И вот за такое тоже $_GET['message'] <> ''

чем тебе такой вариант не понравился?

Спустя 25 минут, 3 секунды (4.04.2011 - 10:59) kirik написал(а):
Цитата (velbox @ 4.04.2011 - 02:34)
чем тебе такой вариант не понравился?

Тем что:
- в контексте топика он не верен
- $_GET['message'] <> '' абсолютно лишнее, хватит и if($_GET['message'])
- ты используешь <>

Спустя 49 минут, 33 секунды (4.04.2011 - 11:49) Guest написал(а):
Ребята, по сути это разные функции и для разных целей.

isset - проверяет, что переменная (элемент массива/объекта) объявлена, и не важно, пустая она или нет

empty - проверяет, является ли переменная (элемент массива/объекта) пустой, т.е. равной null, false, 0, 0.0, '', '0' или array().
Вызов несуществующего элемента даст null, поэтому empty($_POST['несуществующийИндекс']) вернёт true

Спустя 2 часа, 56 минут, 40 секунд (4.04.2011 - 14:45) mrpsyx написал(а):
empty не даст нотисе если переменная не будет существовать, то-есть вернет тру, то-есть пусто... значит isset тут не в тему....
гость все правильно сказал..

Спустя 17 часов, 58 минут, 11 секунд (5.04.2011 - 08:44) linker написал(а):
mrpsyx
index.php?value=0

if (empty($_GET['value']))
die('Вы не ввели значение'); // Это есть ошибка, я ввел нулевое значение, а меня отфутболивают


_____________
Обмен Ukash на WebMoney
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.