Как и когда isset() и empty() используются правильно?


я много раз видел при получении данных из формы следующую проверку:

if (isset($_POST['campo1'])) {
   // Resto de código
}

Что делать, если значение $_POST['campo1'] пусто?


или во многих других случаях я видел следующую проверку:

if (isset($_POST['campo1']) && !empty($_POST['campo1'])) {
   // Resto de código
}

является полностью избыточным, чтобы проверить значение $_POST['campo1'] в то же время с isset() и !empty()?


поэтому мой вопрос: как и когда isset() и empty() используются правильно?

Author: Shaz, 2016-11-06

3 answers

Согласно документации isset():

Возвращает true если переменная существует и имеет значение, отличное от null, false в противном случае.

Например:

$var = ''; // Cadena vacía

if (isset($var)) { // <= true
    ... 
}

Всегда будет возвращать вас true, хотя переменная пуста и должна быть проверена с помощью функции empty():

$var = ''; // Cadena vacía

if (!empty($var)) { // <= false

    // No está vacía (true)

} else {

    // Está vacía (false)
}

¿и когда вы должны использовать isset()?

Если вы хотите проверить, что переменная существует, пример хорошо, если вы хотите знать, была ли отправлена форма:

<form method="post" action="">
    ...
    <input type="text" name="campo1" value="">
    <input type="submit" name="submit" value="Enviar formulario">
</form>

if (isset($_POST['submit']) {
  ...
}

Согласно документации empty():

Возвращает false Если переменная существует и имеет непустое, ненулевое значение . В противном случае возвращает true.

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

"" (una cadena vacía)
0 (0 como un integer)
0.0 (0 como un float)
"0" (0 como un string)
NULL
FALSE
array() (un array vacío)
$var; (una variable declarada, pero sin un valor)

Важно знать, что предупреждение не генерируется, если переменная не существует.

Это означает, что empty() по сути является кратким эквивалентом:

!isset($var) || $var == false.

Тогда будет ли это избыточным, если мы проверим ту же переменную с isset() и empty() одновременно.

Пример, как вы можете использовать isset() и !empty() в же время, когда вы хотите получить данные из формы:

<form method="post" action="">    
    <input type="text" name="campo1" value="">
    ...
    ...
    <input type="submit" name="submit" value="Enviar formulario">
</form>

if (isset($_POST['submit']) {

    if (!empty($_POST['campo1'])) {
        ...
    }
}
 25
Author: Black Sheep, 2018-10-25 15:42:38

Иссет

Isset вы используете его, когда хотите знать

Если переменная определена и не равна NULL..

Пример, archivo1.php

 if ( isset($_POST['submit']))
    {
      // Acciones
    }

Это может быть полезно, если вы хотите проверить, что файл получает переменные POST, так как вы можете получить доступ по url localhost/mifolder/archivo1.php, если вы получаете такой доступ, вы не отправляете никаких значений для POST, тогда он не входит в If.

Другое пример:

$var = '';

// Esto evaluará a TRUE así que el texto se imprimirá.
if (isset($var)) {
    echo "Esta variable está definida, así que se imprimirá";
}

Источник: документация isset

Пустая

Empty-это знать, пуста ли переменная.

" переменная считается пустой, если она не существует или ее значение равно FALSE. empty() не генерирует предупреждение, если переменная не существует. "

$var = 0;

// Se evalúa a true ya que $var está vacia
if (empty($var)) {
    echo '$var es o bien 0, vacía, o no se encuentra definida en absoluto';
}

Что PHP считает пустым:

  • "" (пустая строка)
  • 0 (0 как integer)
  • 0.0 (0 как float)
  • "0" (0 как строка)
  • NULL
  • FALSE
  • array () (пустой массив)
  • $var; (объявленная переменная, но без значения)

Источник: документация empty

¿излишне использовать isset вместе с empty?

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

$var = 0;

if (isset($var))
  echo 'La variable está definida';

if (empty($var))
  echo 'La variable está definida pero está vacía';

Вывод: isset и empty оценивают переменную по-разному . Isset, если переменная null, empty, если она пуста, может быть NULL или любой из приведенного выше списка.

 3
Author: J.Correa, 2016-11-09 18:17:23

Exelent в index вы также можете использовать эту форму, используя два оператора:

if (isset($_POST['$var1']) && !empty($_POST['$var1']) && (isset($_POST['$var2']) && !empty($_POST['$var2']))) {
    echo "<pre>";
    print_r($_POST);


        require_once "conexion.php";
            require_once "buscar.php";
}
 0
Author: eddy, 2019-06-03 15:32:08