Maison  >  Article  >  développement back-end  >  Explication détaillée de la différence entre PHP isset() et empty()

Explication détaillée de la différence entre PHP isset() et empty()

高洛峰
高洛峰original
2017-01-21 13:51:15936parcourir

La fonction isset() de PHP est généralement utilisée pour détecter si une variable est définie.
Format : bool isset (mixed var [, Mixed var [, ...]])

Fonction : Détecter. si une variable est définie.

Valeur de retour :

Si la variable n'existe pas, elle renvoie FALSE
Si la variable existe et que sa valeur est NULL, elle renvoie également FALSE
Si la variable existe et que sa valeur n'est pas NULL, alors renvoie VRAI
Lors de la vérification de plusieurs variables en même temps, VRAI ne sera renvoyé que lorsque chaque élément répond à l'exigence précédente, sinon le résultat sera FAUX
Version : PHP 3, PHP 4, PHP 5
Plus d'instructions :
Après avoir libéré une variable en utilisant unset(), elle ne sera plus isset().
La fonction PHP isset() ne peut être utilisée que pour les variables. La transmission de tout autre paramètre entraînera une erreur d'analyse.
Pour détecter si une constante a été définie, utilisez la fonction définie().

La fonction empty() de PHP détermine si une valeur est vide

Format : bool vide (var mixte)

Fonction : Vérifier si une variable est vide

Valeur de retour :

Si la variable n'existe pas, retournez VRAI
Si la variable existe et que sa valeur est "", 0, "0", NULL,, FALSE, array(), var $ var; et les objets sans aucun attribut, return TURE
Si la variable existe et que la valeur n'est pas "", 0, "0", NULL, FALSE, array(), var $var et les objets sans aucun attribut, alors Renvoie FALSE
Versions : PHP 3, PHP 4, PHP 5
Plus d'instructions :
La valeur de retour de empty() =! (boolean) var, mais aucun message d'avertissement ne sera généré car la variable n'est pas définie . Voir Conversion en booléen pour plus d'informations.
empty() ne peut être utilisé que pour les variables. La transmission de tout autre paramètre provoquera une erreur Paser et mettra fin à l'opération.
Pour détecter si une constante a été définie, utilisez la fonction définie().
Exemple : Une simple comparaison de empty() et isset()

<?php 
$var = 0; 
// 结果为 true,因为 $var 为空 
if (empty($var)) { 
echo &#39;$var is either 0 or not set at all&#39;; 
} 
// 结果为 false,因为 $var 已设置 
if (!isset($var)) { 
echo &#39;$var is not set at all&#39;; 
} 
?>

Remarque : Puisqu'il s'agit d'une structure de langage plutôt que d'une fonction, elle ne peut pas être appelée par des fonctions variables.
Remarque : empty() ne détecte que les variables, détecter tout ce qui n'est pas une variable entraînera une erreur d'analyse. En d’autres termes, l’instruction suivante ne fonctionnera pas : vide(addslashes($name)).
Ce qui suit est un exemple détaillé de code de fonctions isset et vides qui a été testé par Script House. Après avoir lu ceci, c'est fondamentalement le même :

<?php 
error_reporting(E_ALL); 
echo &#39;<B>未定义$var</b><Br>&#39;; 
echo "isset测试:<Br>"; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = \&#39;\&#39;</b><Br>&#39;; 
echo "isset测试:<Br>"; 
$var = &#39;&#39;; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = 0</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = 0 ; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = null</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = null ; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 

echo &#39;<B>$var ="php"</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = "php"; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 

echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
?>

Lorsque vous utilisez PHP pour écrire des programmes de page, J'utilise souvent la fonction de traitement des variables pour déterminer si une valeur de variable à la fin de la page php est vide. Au début, j'avais l'habitude d'utiliser la fonction empty(), mais j'ai trouvé quelques problèmes, je suis donc passé à isset(. ) fonction et le problème n'existait plus.
Comme son nom l'indique, empty() détermine si une variable est "vide" et isset() détermine si une variable a été définie. C'est ce qu'on appelle "comme son nom l'indique" qui m'a fait faire quelques détours au début : lorsqu'une valeur de variable est égale à 0, empty() sera aussi vrai (True), donc des accidents vont se produire. Il s'avère que bien que empty() et isset() soient toutes deux des fonctions de traitement de variables, elles sont toutes deux utilisées pour déterminer si la variable a été configurée, mais elles présentent certaines différences : empty détectera également si la variable est vide ou nulle. Lorsqu'une valeur de variable est 0, empty() considère que la variable est équivalente à être vide, ce qui équivaut à ne pas être définie.
Par exemple, pour détecter la variable $id, lorsque $id=0, utilisez empty() et isset() pour détecter si la variable $id a été configurée. Les deux renverront des valeurs différentes - empty() considère. s'il n'est pas configuré, isset () peut obtenir la valeur de $id :

$id=0; 
empty($id)?print "It&#39;s empty .":print "It&#39;s $id ."; 
//结果:It&#39;s empty . 
print "<br>"; 
!isset($id)?print "It&#39;s empty .":print "It&#39;s $id ."; 
//结果:It&#39;s 0 .

Cela signifie que lorsque nous utilisons la fonction de traitement des variables, lorsque la variable peut avoir une valeur de 0, soyez prudent lorsque vous utilisez vide (). Utilisez isset à ce moment-là. Il serait plus sage de le remplacer.
Lorsque le paramètre URL tail d'une page php apparaît id=0 (par exemple : test.php?id=0), essayez de comparer :

if(empty($id)) $id=1; - 若 id=0 ,id 也会为1 
if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1

Vous pouvez exécuter le code suivant séparément pour détecter l'inférence ci-dessus :

if(empty($id)) $id=1; 
print $id; // 得到 1 
if(!isset($id)) $id=1; 
print $id; //得到 0

要说它们的联系,其共同点就是empty()和 isset()都是变量处理函数,作用是判断变量是否已经配置,正是由于它们在处理变量过程中有很大的相似性,才导致对它们的关系认识不足。单从 empty()和isset()这两个函数本身来考虑的话会把人弄得更糊涂,换一个角度来它。empty()和isset()的处理对象无外乎未定义变量,0,空字符串。 
如果变量为0,则empty()会返回TRUE,isset()会返回TRUE; 

如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE; 
如果变量未定义,则empty()会返回TRUE,isset()会返回FLASE; 

手册中对empty()的解释如下: 

描述bool empty( mixed var ) 
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 
手册中对isset()的解释如下: 

isset()检测变量是否设置 

描述bool isset ( mixed var [, mixed var [, ...]] ) 

如果 var 存在则返回 TRUE,否则返回 FALSE。 

如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”?”)并不等同于 PHP 的 NULL 常数。 
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。 

当要 判断一个变量是否已经声明的时候 可以使用 isset 函数 
当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数 
当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

更多PHP isset()与empty()的使用区别详解相关文章请关注PHP中文网!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn