Я пытаюсь написать сценарий, когда пользователь загружает файл и не вводит имя, возвращается ошибка. Я пробовал использовать is_null, empty и isset, и все они не работают. Например, is_null возвращает ошибку, даже если имя введено. Может ли кто-нибудь помочь?
$caption = $_REQUEST[$name_input_name]; if(is_null($caption)) { $file->error = 'Please Enter a Title'; return false; }
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
isset () – Определить переменную, а не NULL
empty () – определить переменную пустую.
is_null () – определить переменную null
В этих php-функциях empty(),isset() & is_null
в основном используются для проверки переменных. Но каждая функция имеет разные функционалисты.
Кредиты: empty (), isset (), is_null ()