Maison  >  Article  >  développement back-end  >  Quelle est la différence entre l'utilisation de la fonction isset et de la fonction vide en php ? (complet)

Quelle est la différence entre l'utilisation de la fonction isset et de la fonction vide en php ? (complet)

不言
不言original
2018-08-27 17:16:251200parcourir

Le contenu de cet article concerne la différence entre l'utilisation de la fonction isset et de la fonction vide en PHP ? (Complet), il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

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, renvoyer FALSE
Si la variable existe et sa valeur est NULL, renvoie également FALSE
Si la variable existe et que la valeur n'est pas NULL, TRUE est renvoyée
Lors de la vérification de plusieurs variables en même temps, TRUE est renvoyé uniquement lorsque chaque élément est satisfait l'exigence précédente, sinon le résultat est FAUX
Versions : PHP 3, PHP 4, PHP 5
Plus d'instructions :
Après avoir utilisé unset() pour libérer une variable, 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 la valeur est vide

Format : bool vide (var mixte)

Fonction : Vérifiez si une variable est vide

Valeur de retour :

Si la variable n'existe pas, retournez VRAI
Si la variable existe et sa valeur est "" , 0 , "0", NULL,, FALSE, array(), var $var; et les objets sans aucun attribut, renvoient TRUE
Si la variable existe et que la valeur n'est pas "", 0, "0", NULL ,, FALSE, array(), var $var; et les objets sans aucun attribut, renvoient FALSE
Versions : PHP 3, PHP 4, PHP 5
Plus d'instructions :
Valeur de retour de empty() = ! (booléen) 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, Il ne peut pas être appelé à partir de fonctions variables.
Remarque : empty() ne détecte que les variables, et 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 j'utilise PHP pour écrire des programmes de page, j'utilise souvent des fonctions de traitement de 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, donc je l'ai modifié. Avec la fonction isset(), le problème n'est plus un problème.
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() qu'il n'y a pas de configuration, isset() peut récupérer 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, la variable peut avoir une valeur de 0 , soyez prudent lorsque vous utilisez empty(), il est plus judicieux de le remplacer par isset à ce stade.
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

Pour parler de leur connexion, le point commun est que empty() et isset() sont deux fonctions de traitement de variables. Il s'agit de juger si les variables ont été configurées. C'est précisément en raison de leur grande similitude dans le processus de traitement des variables que cela conduit à une compréhension insuffisante de leur relation. Si vous ne considérez que les deux fonctions empty() et isset() elles-mêmes, cela rendra les gens plus confus. Regardez-le 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 et 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() retournera TRUE ; isset() renverra FLASE ;

L'explication de empty() dans le manuel est la suivante :

Description bool vide (var mixte)
Si var est une valeur non vide ou non nulle, vide() 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 une variable est défini

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

Renvoie VRAI si var existe, sinon renvoie FAUX.

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 paramètre provoquera une erreur d'analyse. Si vous souhaitez vérifier si une constante a été définie, vous pouvez utiliser la fonction définie().

Vous pouvez utiliser la fonction isset lorsque vous souhaitez juger si une variable a été déclarée.
Vous pouvez l'utiliser lorsque vous souhaitez juger si une variable. la variable a reçu des données et n'est pas vide, fonction
Lorsque vous souhaitez déterminer qu'une variable existe et n'est pas vide, utilisez d'abord la fonction isset puis la fonction vide

Recommandations associées :

La fonction vide() et la fonction isset( en PHP)

La différence entre la fonction PHP isset() et la fonction vide()_Tutoriel PHP

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