Code expliquera plus:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
Le résultat retourne "Son vide". Je pensais que empty () vérifiera si j'ai déjà défini la variable et si sa valeur est interne. Pourquoi il retourne "Son vide" ??
Les éléments suivants sont considérés comme vides:
- "" (une chaîne vide)
- 0 (0 as an integer)
- "0" (0 sous forme de chaîne)
- NUL
- FALSE
- array () (un tableau vide)
- var $ var; (une variable déclarée, mais sans valeur dans une classe)
Notez qu'il s'agit exactement de la même liste que pour une contrainte sur Boolean false
. empty
est tout simplement !isset($var) || !$var
. Essayez isset
à la place.
Je me demandais pourquoi personne ne suggérait le très pratique Tableau de comparaison des types . Il répond à toutes les questions sur les fonctions communes et compare les opérateurs.
Un extrait:
Expression | empty()
----------------+--------
$x = ""; | true
$x = null | true
var $x; | true
$x is undefined | true
$x = array(); | true
$x = false; | true
$x = true; | false
$x = 1; | false
$x = 42; | false
$x = 0; | true
$x = -1; | false
$x = "1"; | false
$x = "0"; | true
$x = "-1"; | false
$x = "php"; | false
$x = "true"; | false
$x = "false"; | false
Parmi les autres feuilles de triche, je garde toujours une copie papier de cette table sur mon bureau au cas où je ne suis pas sûr
En cas de valeurs numériques, vous devez utiliser la fonction is_numeric:
$var = 0;
if (is_numeric($var))
{
echo "Its not empty";
}
else
{
echo "Its empty";
}
Utilisezstrlen()
à la place de . J'ai rencontré le même problème en utilisant 1/0 comme valeurs possibles pour certaines variables . J'utilise if (strlen($_POST['myValue']) == 0)
pour tester s'il y a un caractère ou non dans ma variable.
J'ai récemment été pris avec mon pantalon sur celui-ci également. Le problème que nous traitons souvent est celui des variables non définies. Par exemple, un élément de formulaire qui n’a peut-être pas été présent, mais pour de nombreux éléments, 0
(ou la chaîne '0'
qui apparaîtrait plus précisément dans la publication, mais serait néanmoins évaluée comme " falsey ") est une valeur légitime, disons sur une liste déroulante.
utiliser empty()
en premier, puis strlen()
est votre meilleur choix si vous en avez besoin, ainsi:
if(!empty($var) && strlen($var)){
echo '"$var" is present and has a non-falsey value!';
}
D'un point de vue linguistique vide a la signification de sans valeur . Comme les autres l'ont dit, vous devrez utiliser isset()
pour vérifier si une variable a été définie, et c'est ce que vous faites.
Cela fonctionne pour moi!
//
if(isset($_POST['post_var'])&&$_POST['post_var']!==''){
echo $_POST['post_var'];
}
//results:
1 if $_POST['post_var']='1'
0 if $_POST['post_var']='0'
skip if $_POST['post_var']=''
Pour accepter 0 comme valeur dans la variable, utilisez isset
Vérifier si la variable est vide
$var = 0;
if ($var == '') {
echo "empty";
} else {
echo "not empty";
}
//output is empty
Vérifier si la variable est définie
$var = 0;
if (isset($var)) {
echo "not empty";
} else {
echo "empty";
}
//output is not empty
if (empty($var) && $pieces[$var] != '0') {
//do something
}
Dans mon cas, ce code a fonctionné.
From manual: Renvoie FALSE si var a une valeur non vide et non nulle.
Les éléments suivants sont considérés comme vides:
bon exemple. Il suffit de créer un champ de type int (exemple: numéro de mobile) dans la base de données et de soumettre une valeur vide pour la base de données suivante via un formulaire ou de simplement l'insérer à l'aide de SQL. ce qui sera enregistré dans la base de données 0 car il est de type int et ne peut pas être enregistré comme vide ou nul. par conséquent, il est vide mais il sera enregistré en tant que 0. Ainsi, lorsque vous récupérez des données via PHP et que vous recherchez les valeurs vides. c'est très utile et logiquement correct.
0.00, 0.000, 0.0000 .... 0.0 ... 0 est également vide et l'exemple ci-dessus peut également être utilisé pour stocker différents types de valeurs dans une base de données telles que float, double, decimal (décimal (différentes variantes telles que 0.000, etc.).
vide doit signifier vide .. quoi que dise Deceze.
Quand je fais
$var = '';
$var = '0';
Je m'attends à ce que var_dump(empty($var));
renvoie false.
si vous vérifiez des choses dans un tableau, vous devez toujours commencer par isset($var)
.
Vous devez utiliser isset () pour vérifier si la valeur est définie.
utilisez seulement ($_POST['input_field_name'])!=0
au lieu de !($_POST['input_field_name'])==0
, 0 n'est pas considéré comme vide.
Pas sûr s'il y a encore des gens qui cherchent une explication et une solution. Les commentaires ci-dessus disent tout sur les différences entre TRUE/FALSE/1/0.
Je voudrais juste apporter mes 2 cents pour la façon d’afficher la valeur réelle.
Si vous travaillez avec un type de données booléen, vous recherchez un résultat VRAI ou FAUX. si vous le stockez dans MySQL, il sera stocké sous la forme 1, respectivement. 0 (si je ne me trompe pas, c'est la même chose dans la mémoire de votre serveur).
Donc, pour afficher la valeur en PHP, vous devez vérifier si elle est vraie (1) ou fausse (0) et afficher ce que vous voulez: "vrai" ou "faux" ou éventuellement "1" ou "0".
Attention, tout ce qui est plus grand (ou différent) que 0 sera également considéré comme TRUE en PHP. Exemple: 2, "abc", etc. retournera tous VRAI .
Si vous travaillez avec un type de données numérique, la façon dont il est stocké est la même.
Pour afficher la valeur, vous devez dire PHP de la traiter comme un nombre. Le moyen le plus simple que j'ai trouvé est de le multiplier par 1.
En fait, il suffit de vérifier si la variable est définie ou non. Dans ce cas, si vous souhaitez vérifier si votre variable est réellement nulle ou vide, vous pouvez utiliser cet exemple:
$myVar = '';
if (empty($myVar))
{
echo "Its empty";
}
echo "<br/>";
if ($myVar===0)
{
echo "also zero!";
}
juste pour avis $ myVar == 0 agit comme une fonction vide.
Les éléments suivants sont considérés comme vides:
De PHP Manuel
Dans votre cas, $var
est 0
, donc empty($var)
renverra true
, vous annulerez le résultat avant de le tester. Le bloc else s'exécutera en donnant le résultat "Its empty
".