Intereting Posts
CodeIgniter – Требуется подтверждение загрузки файла Любой способ разбить оператор на PHP? Что это за синтаксис PHP? Модули тестирования Symfony2 с ограничениями Google_Service_Directory – (403) Не авторизовано для доступа к этому ресурсу / api Эхо-массивы с регулярным текстом Как удалить первый символ строки в PHP? Drupal 6: Views: перечисление таксономических терминов с помеченными узлами под MySQL-Невозможно перейти к строке 0 по индексу результата MySQL Неустранимая ошибка: время выполнения 30 секунд превышено в phpmyadmin Карты Laravel и google: маркер или диаграмма foreach широты / долготы Может ли система оценки репутации быть реализована с использованием системы управления бизнес-правилами (BRMS), такой как OpenL Tablets, в PHP? PHP: Как преобразовать регулярное выражение в пример соответствия? + для массива в PHP? Apache не запускается из панели управления XAMPP (ошибка: неожиданное завершение Apache. Это может быть связано с заблокированным портом)

Зачем проверять и isset () и! Empty ()

Есть разница между isset и !empty . Если я делаю эту двойную логическую проверку, правильно ли это или избыточно? и есть ли более короткий способ сделать то же самое?

 isset($vars[1]) AND !empty($vars[1]) 

Это полностью избыточно. empty более или менее сокращенно !isset($foo) || !$foo !isset($foo) || !$foo , и !empty аналогичен isset($foo) && $foo . Т.е. empty делает обратную вещь isset плюс дополнительную проверку правдоподобия значения.

Или, другими словами, empty такая же, как !$foo , но не бросает предупреждения, если переменная не существует. В этом суть этой функции: выполнить логическое сравнение, не беспокоясь о заданной переменной.

В руководстве написано так:

empty() – это противоположность (boolean) var , за исключением того, что предупреждение не генерируется, когда переменная не задана.

Вы можете просто использовать !empty($vars[1]) здесь.

isset() проверяет, установлена ​​ли переменная, а не null:

http://us.php.net/manual/en/function.isset.php

empty() может возвращать значение true, если переменная установлена ​​на определенные значения:

http://us.php.net/manual/en/function.empty.php

Чтобы продемонстрировать это, попробуйте следующий код: $ a_var не назначен, установлен в 0 и установлен в 1.

 <?php #$the_var = 0; if (isset($the_var)) { echo "set"; } else { echo "not set"; } echo "\n"; if (empty($the_var)) { echo "empty"; } else { echo "not empty"; } ?> 
 $a = 0; if (isset($a)) { //$a is set because it has some value ,eg:0 echo '$a has value'; } if (!empty($a)) { //$a is empty because it has value 0 echo '$a is not empty'; } else { echo '$a is empty'; } 

Принятый ответ неверен.

isset () НЕ эквивалентно! empty ().

Вы будете создавать некоторые довольно неприятные и трудно отлаживать ошибки, если вы спуститесь по этому маршруту. например, попробуйте запустить этот код:

 <?php $s = ''; print "isset: '" . isset($s) . "'. "; print "!empty: '" . !empty($s) . "'"; ?> 

https://3v4l.org/J4nBb

Пустая проверка – это ссылочная переменная / массив имеет значение, если вы проверите php doc (пустой), вы увидите, что это считается emtpy

 * "" (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) 

в то время как isset проверяет, является ли переменная isset, а не null, которая также может быть найдена в php doc (isset)

если мы используем одну и ту же страницу для добавления / редактирования с помощью кнопки отправки, как показано ниже

 <input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id"> 

то мы не должны использовать

 isset($_POST['edit_id']) 

bcoz edit_id устанавливается все время, будь то страница добавления или редактирования, вместо этого мы должны использовать проверку ниже условия

 !empty($_POST['edit_id']) 

«Пусто»: работает только с переменными. Пустой может означать разные вещи для разных типов переменных (см. Руководство: http://php.net/manual/en/function.empty.php ).

«isset»: проверяет, существует ли переменная и проверяет истинное значение NULL или false. Может быть отменено путем вызова «unset». Еще раз проверьте руководство.

Использование одного из них зависит от типа переменной, которую вы используете.

Я бы сказал, безопаснее проверять оба, потому что вы проверяете в первую очередь, существует ли переменная, и если это не действительно NULL или пусто.

Это не обязательно.

Предупреждение не генерируется, если переменная не существует. Это означает, что empty () по существу является кратким эквивалентом! Isset ($ var) || $ var == false.

php.net

как насчет этого

 function IsEmpty($myVar){ if(isset($myVar) && (!empty($myVar) OR $myVar === 0 OR $myVar === false ) ){ return false; } else{ return true; } } $myVar = 0; // Set and Not Empty $myVar = true; // Set and Not Empty $myVar = false; // Set and Not Empty $myVar = ''; // Either Not Set or Empty $myVar = 'abc'; // Set and Not Empty if(!IsEmpty($myVar)){ echo 'Set and Not Empty'; } else{ echo 'Either Not Set or Empty'; } 

Демо: http://sandbox.onlinephpfunctions.com/code/7131f142742f0765c2619841bb9abfa598bcf066