Intereting Posts

isset vs empty vs is_null

Я пытаюсь написать сценарий, когда пользователь загружает файл и не вводит имя, возвращается ошибка. Я пробовал использовать is_null, empty и isset, и все они не работают. Например, is_null возвращает ошибку, даже если имя введено. Может ли кто-нибудь помочь?

$caption = $_REQUEST[$name_input_name]; if(is_null($caption)) { $file->error = 'Please Enter a Title'; return false; } 

Related of "isset vs empty vs is_null"

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

 <?php echo isset($var); // false $var = 'hello'; 

empty() проверяет, является ли переменная пустой, т.е.

 <?php $emptyString = ''; echo empty($emptyString); // true 

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

Поскольку ваш заголовок является строкой, я думаю, вы хотите использовать empty()

 if (!isset($_REQUEST[$name_input_name]) || empty($_REQUEST[$name_input_name])) { $file->error = 'Please Enter a Title'; return false; } 

Я думаю, вы хотели использовать isset прежде чем назначить его:

 if(!isset($_REQUEST[$name_input_name])) { $file->error = 'Please Enter a Title'; return false; } $caption = $_REQUEST[$name_input_name]; 

Исеть ()

Из руководства PHP – isset ():

isset – Определяет, установлена ​​ли переменная и не является NULL

Другими словами, он возвращает true только тогда, когда переменная не равна нулю.

пустой ()

Из PHP Manual – empty ():

empty – определить, является ли переменная пустой

Другими словами, он вернет true, если переменная является пустой строкой, false, array (), NULL, «0 ?, 0» и неустановленной переменной.

нулевой()

Из руководства PHP – is_null ():

is_null – Определяет, является ли переменная NULL

Другими словами, он возвращает true только тогда, когда переменная имеет значение null. is_null() противоположно isset() , за исключением одной разницы, которую isset() может применяться к неизвестным переменным, но is_null() только для объявленных переменных.

is_null() испускает ПРЕДУПРЕЖДЕНИЕ в случае, если переменная не установлена, но isset() и empty() этого не делают.

 $a - variable with not null value (eg TRUE) $b - variable with null value. `$b = null;` $c - not declared variable $d - variable with value that cast to FALSE (eg empty string, FALSE or empty array) $e - variable declared, but without any value assigned | $a | $b | $c | $d | $e | ---------+-------+-------+-------+-------+-------+ is_null()| FALSE | TRUE |TRUE*W | FALSE | TRUE | ---------+-------+-------+-------+-------+-------+ isset() | TRUE | FALSE | FALSE | TRUE | FALSE | ---------+-------+-------+-------+-------+-------+ empty() | FALSE | TRUE | TRUE | TRUE | TRUE | ---------+-------+-------+-------+-------+-------+ TRUE*W - function return TRUE, but same time emits WARNING. 

На странице документации функции empty () вы можете прочитать, что:

Следующие вещи считаются пустыми:

….

$ Var; (объявленная переменная, но без значения)

Это может ввести в заблуждение код $var; определяет переменную, но не присваивает ей никакого значения, но это неправильно. Переменная $var по-прежнему не определена и is_null() функции распознавания типа, например is_null() испускает предупреждения, если вы передаете $var в качестве аргумента.

Некоторые описания низкого уровня:

isset() и empty() – это основные функции / kyewords, такие как if , require_once и namespace , кроме того, они обрабатываются одной и той же функцией zend_compile_isset_or_empty с некоторой минимальной разницей в алгоритме.

is_null() – функция распознавания типа , такая как is_numeric , is_recource , is_bool и т. д.

 /* {{{ proto bool is_null(mixed var) Returns true if variable is null Warning: This function is special-cased by zend_compile.c and so is usually bypassed */ PHP_FUNCTION(is_null) { php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_NULL); } 

Я использую strlen для подсчета количества символов

  if (strlen($_REQUEST['name_input_name']) < 1) {  $file->error = 'Please Enter a Title';  return false; } 

Вы можете попробовать следующее:

 if(!isset($_REQUEST['name_input_name'])) { $file->error = 'Please Enter a Title'; return false; } $caption = $_REQUEST['name_input_name']; 

Примечание: $ _REQUEST – это глобальный массив, который хранит данные в парах ключ => значение. рассмотрите имя name_input_name как значение, извлеченное из сервера.

если name_input_name установлен в некоторый код значения, будет пропускаться, если блокировать и хранить значение переменной $ caption.

is_null является двойником isset, за исключением isset, не выводит извещения, если переменная имеет значение null.

 >$ciao; >var_export(is_null($ciao)); >PHP Notice: Undefined variable: ciao in php shell code on line 1 >true >var_export(!isset($ciao)); >true 
  1. isset () – Определить переменную, а не NULL

  2. empty () – определить переменную пустую.

  3. is_null () – определить переменную null

В этих php-функциях empty(),isset() & is_null в основном используются для проверки переменных. Но каждая функция имеет разные функционалисты.

Кредиты: empty (), isset (), is_null ()