Maison  >  Article  >  développement back-end  >  La différence entre isset() et empty() en PHP

La différence entre isset() et empty() en PHP

迷茫
迷茫original
2017-03-26 11:16:471336parcourir

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 la variable est définie

Valeur de retour :

Si la variable n'existe pas, renvoie FALSE
Si la variable existe et sa valeur est NULL, renvoie également FALSE
Si la variable existe et si la valeur n'est pas NULL, VRAI sera renvoyé
Lors de la vérification de plusieurs variables en même temps, VRAI sera renvoyé uniquement 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'explications :
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 vérifier si une constante a été définie, utilisez la fonction définie().

La fonction empty() de PHP détermine si la 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, renvoie VRAI
Si la variable existe et sa valeur est "", 0, "0", NULL,, FALSE, array( ), var $var; et les objets sans aucun attribut, renvoient TURE
Si la variable existe et que la valeur n'est pas "", 0, "0", NULL,, FALSE, array(), var $var; et aucun Objet de n'importe quel attribut, renvoie FALSE
Version : PHP 3, PHP 4, PHP 5
Plus d'explications :
La valeur de retour de empty() = (boolean) var, mais ce ne sera pas le cas. car la variable n'est pas Définir un message d'avertissement. 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 vérifier 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, vide() Déterminer si une variable est "vide", isset() Détermine si une variable a été définie. C'est ce soi-disant "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 cela arrivera Quelques surprises. Il s'avère que empty() et isset() Bien qu'il s'agisse toutes deux de 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 : vide détectera également si la variable est vide ou nulle. Lorsqu'une valeur de variable est 0, vide() Cette variable est considérée comme vide, ce qui équivaut à aucun paramètre.
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; - Si id=0, id sera également 1
if(!isset($id)) $id=1; - Si id=0, id ne sera pas 1

Vous pouvez exécuter le code suivant séparément Vérifiez l'inférence ci-dessus :

if(empty($id)) $id=1;
print $id; // get 1
if(!isset($id) ) $id=1 ;
imprimer $id; //obtenir 0

Pour parler de leur connexion, leurs points communs sont vides() et isset() est une fonction de traitement de variables, et sa fonction est de déterminer si la variable a été configurée. C'est précisément en raison de leur grande similitude dans le processus de traitement des variables qu'ils n'ont pas une compréhension suffisante de leur relation. Shan Cong Si les deux fonctions empty() et isset() sont considérées seules, cela rendra les gens plus confus. Regardez-les sous un autre angle. Les objets de traitement de empty() et isset() ne sont rien de plus que des variables non définies, 0 et des chaînes vides.
Si la variable est 0, empty() retournera TRUE, isset() retournera TRUE ;

Si la variable est une chaîne vide, empty() retournera TRUE, isset() retournera TRUE ; ;
Si la variable n'est pas définie, empty() renverra TRUE et isset() renverra FLASE
L'explication de empty() dans le manuel est la suivante :
Description ; bool empty( Mixed var )
Si var est une valeur non vide ou non nulle, empty() renvoie FALSE. En d'autres termes, "", 0, "0", NULL, FALSE, array(), var $var; et les objets sans aucune propriété seront considérés comme vides, et TRUE sera renvoyé si var est vide.
L'explication de isset() dans le manuel est la suivante :

isset() détecte si la variable est définie

Description bool isset ( Mixed var [ , Mixed var [, ...]] )

Renvoie VRAI si var existe, sinon renvoie FALSE.

Si une variable a été libérée en utilisant unset(), elle ne sera plus isset(). Si vous utilisez isset() pour tester une variable définie sur NULL, elle renverra FALSE. Notez également qu'un octet NULL ("?") n'est pas équivalent à la constante NULL de PHP.
Attention : isset() ne peut être utilisé qu'avec des variables, car le passage de tout autre argument entraînera une erreur d'analyse. Si vous souhaitez vérifier si une constante a été définie, vous pouvez utiliser la fonction définie().

Lorsque vous souhaitez juger si une variable a été déclarée, vous pouvez utiliser la fonction isset
Lorsque vous souhaitez juger si une variable a reçu des données et n'est pas vide, vous pouvez utiliser la fonction vide
Quand vous voulez juger une variable Si la variable existe et n'est pas vide, utilisez d'abord la fonction isset puis utilisez la fonction vide

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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