Как и когда 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()
используются правильно?
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'])) {
...
}
}
Иссет
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 или любой из приведенного выше списка.
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";
}