[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция empty или isset ?
Dima_Kovalev
Объясните пожалуйста почему в данном коде


header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

$text = !empty($_POST['text'])?$_POST['text']:null;
?>
<form action="?" method="post">
<
input name="text" type="text" value="<?php echo htmlspecialchars($text) ?>"/><br />
<
input name="ok" type="submit" />
</
form>
<?php
echo htmlspecialchars($text);

источник
автор использует функцию !empty()?

Не лучше ли было использовать функцию isset()?



Спустя 19 минут, 31 секунда (27.03.2010 - 22:03) qpayct написал(а):
мада-а-а.... вопрос на миллион баксов...
потому, что ему(автору) пофиг, что данное isset() и по всей видимости надо чтобы не было равно нулю

ЧИТАЙ МАНУАЛ!!! ТЕСТИ ISSET() !EMPTY() и вопросы сами по себе пропадут

Спустя 1 час, 10 минут, 12 секунд (27.03.2010 - 23:13) sergeiss написал(а):
qpayct - ты не прав! Это вопрос из тех, что в мануале просто не поймешь разницу. Если нету опыта. А вопрос появляется как раз тогда, когда опыта нету smile.gif

Автору темы:
isset проверяет, определена ли переменная. В смысле, что создана ли она. И не важно, что там именно определено. Даже если null, но переменная была создана, то isset вернет true.
empty проверяет содержимое переменной. Вернет false в 2-х случаях: если содержимое пустое, и если переменая не определена.

В данном случае строка
 $text = !empty($_POST['text'])?$_POST['text']:null;

говорит о том, что автору не важно, была ли передана переменная text в ПОСТе. Ему важно, что либо было что-то введено (вариант 1), либо не было ничего введено (или не было вообще передано такой переменной) - вариант 2.

Спустя 10 минут, 43 секунды (27.03.2010 - 23:24) qpayct написал(а):
sergeiss
ну вот я почему то перед тем, как спрашивать, проверяю. неужели тяжело написать проверку в 2 строки и увидеть разницу?
насчёт мануала кстати тоже вот на первой же странице поиска ответ прямо перед носом :
isset()
empty()
а русские ман-ы в основном - сакс

Спустя 1 минута, 35 секунд (27.03.2010 - 23:26) glock18 написал(а):
Цитата (sergeiss @ 27.03.2010 - 20:13)
isset проверяет, определена ли переменная. В смысле, что создана ли она. И не важно, что там именно определено. Даже если null, но переменная была создана, то isset вернет true.


насколько я знаю, в мануале написано ровно то же самое.

Цитата (sergeiss @ 27.03.2010 - 20:13)
empty проверяет содержимое переменной. Вернет false в 2-х случаях: если содержимое пустое, и если переменая не определена.


опять же в мануале написано точнее. а именно не "содержимое пустое", а если значение приводится к boolean как false.

все таки склонен поддержать qpayct. вопрос совсем без подвоха - надо всего лишь почитать.

Спустя 22 минуты, 44 секунды (27.03.2010 - 23:48) sergeiss написал(а):
Да хрен его знает... Я тут немного пЫва принял - поэтому, возможно, более добрый, чем надо бы wink.gif

Спустя 11 минут, 53 секунды (28.03.2010 - 00:00) glock18 написал(а):
smile.gif

Спустя 4 минуты, 4 секунды (28.03.2010 - 00:04) qpayct написал(а):
о! точно! пивож стынет! smile.gif пойду-ка я тоже добреть

Спустя 6 часов, 38 минут, 15 секунд (28.03.2010 - 05:43) twin написал(а):
Я могу сказать почему, так как я автор)))
Потому что лениво писать две проверки, не совсем понял, это ли имел ввиду qpayct
Дело в том, что empty() устраивает в данном случае по всем параметрам. А именно:
Цитата
The following things are considered to be empty:
"" (an empty string)
0 (0 as an integer)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

Кроме того, она на вызывает нотиса, если переменной не существует. По этому в таких случаях (когда можно пренебречь нулем) я предпочитаю эту конструкцию более длинным веревкам плана

$text = (isset($_POST['text']) && $_POST['text'] != '')?$_POST['text']:null;

Спустя 31 минута, 55 секунд (28.03.2010 - 06:14) kirik написал(а):
Цитата (sergeiss @ 27.03.2010 - 15:13)
Даже если null, но переменная была создана, то isset вернет true.

isset вернет тут false (попался уже один раз на этом).
В мане по isset:
Цитата
Returns TRUE if var exists and has value other than NULL, FALSE otherwise.

А еще советую всем почитать эту штуку.
Быстрый ответ:

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