Подтвердить что ты не робот

Где я должен использовать isset() и! Empty()

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

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

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

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

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

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

Используя это

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

Ответ 1

Исеть против! Пусто

FTA:

"isset() проверяет, имеет ли переменная значение, включающее (False, 0 или пустую строку), но не NULL. Возвращает TRUE, если var существует; FALSE в противном случае.

С другой стороны, функция empty() проверяет, имеет ли переменная пустое значение, пустую строку, 0, NULL или False. Возвращает FALSE, если var имеет непустое и ненулевое значение. "

Ответ 2

В наиболее общем виде:

  • isset проверяет, существует ли переменная (или элемент массива или свойство объекта) (и не является нулевым)
  • empty проверяет, содержит ли переменная (...) некоторые непустые данные.


Чтобы ответить на вопрос 1:

$str = '';
var_dump(isset($str));

дает

boolean true

Поскольку существует переменная $str.


И вопрос 2:

Вы должны использовать isset, чтобы определить, существует ли переменная ; например, если вы получаете некоторые данные в виде массива, вам может потребоваться проверить, есть ли в этом массиве ключ isset. Например, подумайте о $_GET/$_POST.

Теперь, чтобы работать над его значением, когда вы знаете, что есть такое значение: это задание empty.

Ответ 3

isset предназначен для использования только для переменных, а не только для значений, поэтому isset("foobar") вызовет ошибку. Начиная с PHP 5.5, empty поддерживает как переменные, так и выражения.

Итак, ваш первый вопрос должен быть, если isset возвращает true для переменной, содержащей пустую строку. И ответ:

$var = "";
var_dump(isset($var));

таблицы сравнения типов в руководстве по PHP весьма полезны для таких вопросов.

isset в основном проверяет, имеет ли переменная какое-либо значение, отличное от нуля, поскольку несуществующие переменные всегда имеют значение null. empty является видом счетной части isset, но также обрабатывает целочисленное значение 0 и строковое значение "0" как пустое. (Опять же, взгляните на таблицы сравнения .)

Ответ 4

Ни один из них не является хорошим способом проверки правильности ввода.

  • isset() недостаточно, потому что, как уже отмечалось, он считает допустимым значение пустой строки.
  • ! empty() недостаточно, потому что он отклоняет "0", что может быть допустимым значением.

Использование isset() в сочетании с проверкой равенства с пустой строкой является минимальным минимумом, который необходимо проверить, чтобы входящий параметр имел значение без создания ложных негативов:

if( isset($_GET['gender']) and ($_GET['gender'] != '') )
{
  ...
}

Но по "минимальному минимуму" я имею в виду именно это. Все приведенные выше коды определяют, существует ли какое-то значение для $_GET['gender']. Он не определяет, действительно ли значение для $_GET['gender'] (например, один из ("Male", "Female", "FileNotFound" )).

Для этого см. ответ Джоша Дэвиса.

Ответ 5

Если у вас есть $_POST ['param'] и предположим, что это строковый тип, то

isset($_POST['param']) && $_POST['param'] != '' && $_POST['param'] != '0'

совпадает с

!empty($_POST['param'])

Ответ 6

isset() не является эффективным способом проверки текстовых входов и текстовых полей из HTML-формы

Вы можете переписать это как "isset() не способ проверки ввода". Чтобы проверить ввод, используйте PHP расширение фильтра. filter_has_var() сообщит вам, существует ли переменная, а filter_input() будет фактически фильтровать и/или дезинфицировать вход.

Обратите внимание, что вам не нужно использовать filter_has_var() до filter_input(), и если вы запрашиваете переменную, которая не установлена, filter_input() просто вернет null.

Ответ 7

isset используется для определения того, существует ли экземпляр какого-либо объекта, который есть, если была создана экземпляр переменной... это не касается значения параметра...

Паскаль МАРТИН... +1 ...

empty() не генерирует предупреждение, если переменная не существует... поэтому isset() является предпочтительным при тестировании существования переменной, когда вы собираетесь ее модифицировать...

Ответ 8

Когда и как использовать:

  • Исеть()

True для 0, 1, пустая строка, строка, содержащая значение, true, false

False для null

e.g

$status = 0
if (isset($status)) // True
$status = null 
if (isset($status)) // False
  1. Empty

False для 1, строка, содержащая значение, true

True для нулевой, пустой строки, 0, false например

$status = 0
if(empty($status)) // true
$status = 1
if(empty($status)) // False

Ответ 9

Использование empty достаточно:

if(!empty($variable)){
    // Do stuff
}

Кроме того, если вы хотите получить целочисленное значение, также стоит проверить, что intval($variable) !== FALSE.

Ответ 10

isset($variable) === (@$variable !== null)
empty($variable) === (@$variable == false)

Ответ 11

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

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

Ответ 12

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

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

Ответ 13

    $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

Ответ 14

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";
}
?>