Где я должен использовать isset () и! Empty () - PullRequest
82 голосов
/ 02 августа 2009

Я где-то читал, что функция isset() обрабатывает пустую строку как TRUE, поэтому isset() не является эффективным способом проверки ввода текста и текстовых полей из формы HTML.

Таким образом, вы можете использовать empty(), чтобы проверить, что пользователь что-то набрал.

  1. Правда ли, что функция isset() обрабатывает пустую строку как TRUE?

  2. Тогда в каких ситуациях мне следует использовать isset()? Должен ли я всегда использовать !empty(), чтобы проверить, есть ли что-то?

Например, вместо

if(isset($_GET['gender']))...

Использование этого

if(!empty($_GET['gender']))...

Ответы [ 14 ]

0 голосов
/ 26 марта 2019

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

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

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

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

<?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";
}
?>
0 голосов
/ 10 июля 2018
    $var = '';
// Evaluates to true because $var is empty
if ( empty($var) ) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if ( isset($var) ) {
 echo '$var is set even though it is empty';
    }

Источник: Php.net

0 голосов
/ 17 мая 2018

isset () используется для проверки, установлена ​​ли переменная со значением или нет, а Empty () используется для проверки, является ли данная переменная пустой или нет.

isset () возвращает true, если переменная не равна нулю, тогда как Empty () возвращает true, если переменная является пустой строкой.

0 голосов
/ 07 августа 2017

Я использую следующее, чтобы избежать уведомлений, это проверяет, объявлена ​​ли переменная, объявленная в GET или POST, и с префиксом @ вы можете безопасно проверить, не является ли она пустой, и избежать уведомления, если переменная не установлена:

if( isset($_GET['var']) && @$_GET['var']!='' ){
    //Is not empty, do something
}
...