Le code expliquera plus:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
Le résultat renvoie "Son vide". Je pensais que empty () vérifierait si j'avais déjà défini la variable et que j'avais une valeur à l'intérieur. Pourquoi il renvoie "Son vide" ??
empty
est peut-être la fonction PHP la plus utile mais la plus largement méconnue. Apprenez comment et quand l'utiliser.empty
est essentiellement l'abréviation deisset($var) && $var != false
. Vous devez tenir votreempty
très bizarre pour vous tirer une balle dans le pied avec ça. ; Pfalse
sans déclencher une erreur "variable indéfinie" est inutile? Eh bien, je suppose que vous ne faites jamais cela… 3) Choisir la mauvaise fonction dans un contexte de sécurité ne signifie pas que la fonction elle-même est mauvaise, inutile ou incohérente; cela signifie simplement que quelqu'un a choisi la mauvaise fonction pour le travail.empty()
, alors elle a probablement le mauvais nom.Réponses:
http://php.net/empty
Notez que c'est exactement la même liste que pour une coercition en booléen
false
.empty
est simplement!isset($var) || !$var
. Essayezisset
plutôt.la source
!empty($var)
, mais notez que ce n'est pas la même chose que ce que vous avez écrit dans la question. Ce qu'il faut utiliser dépend entièrement des valeurs que vous souhaitez considérertrue
. Comparez simplement les différences entreisset
etempty
et choisissez la bonne combinaison pour la bonne situation.isset
retourneTrue
si$var=0
. Mais ce que vous voulez dire avecif(isset($var) && $var != 0)
est le même queempty
'0'
est traité comme équivalent à0
. C'est une philosophie de conception fondamentale de PHP. Je conviens que c'est un choix extrêmement discutable, mais je ne suis pas ici pour débattre de ce choix avec vous. Dans la logique de PHP,empty
comme équivalent à des== false
avis moins, c'est bien IMO. Que certaines choses devraient être très différentes en PHP de ce qu'elles sont est un sujet différent.Je me demandais pourquoi personne n'avait suggéré le tableau de comparaison des types extrêmement pratique . Il répond à toutes les questions sur les fonctions communes et compare les opérateurs.
Un extrait:
Avec d'autres cheatsheets, je garde toujours une copie papier de ce tableau sur mon bureau au cas où je ne serais pas sûr
la source
En cas de valeurs numériques, vous devez utiliser la fonction is_numeric:
la source
Utilisez
strlen()
plutôt. J'ai rencontré le même problème en utilisant 1/0 comme valeurs possibles pour certaines variables. J'utiliseif (strlen($_POST['myValue']) == 0)
pour tester s'il y a un caractère ou non dans ma variable.la source
@strlen
. Tant que vous passez une variable, elle ne devrait pas générer d'erreur. Si votre strlen est vide, il enregistrera la valeur 0.J'ai récemment été surpris avec mon pantalon baissé sur celui-ci également. Le problème que nous traitons souvent concerne les variables non définies - disons un élément de formulaire qui peut ou non avoir été là, mais pour de nombreux éléments,
0
(ou la chaîne'0'
qui apparaîtrait plus précisément dans le message, mais serait quand même évaluée comme "false" ) est une valeur légitime dans une liste déroulante.utiliser d'
empty()
abord et ensuitestrlen()
est votre meilleur choix si vous en avez également besoin, comme:la source
D'un point de vue linguistique, vide a un sens de sans valeur . Comme les autres l'ont dit, vous devrez utiliser
isset()
pour vérifier si une variable a été définie, ce que vous faites.la source
0
versusnull
. Merci!empty()
retourne vrai pour tout ce qui est évaluéFALSE
, c'est en fait un 'not' (!
) déguisé. Je pense que tu voulais direisset()
la source
Pour accepter 0 comme valeur dans la variable, utilisez
isset
Vérifiez si la variable est vide
Vérifiez si la variable est définie
la source
Ça marche pour moi!
la source
Les éléments suivants sont considérés comme vides:
À partir du manuel PHP
Dans votre cas
$var
est0
, doncempty($var)
retourneratrue
, vous annulez le résultat avant de le tester, donc le bloc else fonctionnera en donnant "Its empty
" en sortie.la source
From manual: renvoie FALSE si var a une valeur non vide et non nulle.
Les éléments suivants sont considérés comme vides:
En savoir plus: http://php.net/manual/en/function.empty.php
la source
Dans mon cas, ce code a fonctionné.
la source
En fait, il suffit de vérifier si la variable est définie ou non.Dans ce cas, si vous voulez vérifier si votre variable est vraiment nulle ou vide, vous pouvez utiliser cet exemple:
juste pour remarquer que $ myVar == 0 agit comme une fonction vide.
la source
vide devrait signifier vide .. quoi que dise deceze.
Quand je fais
J'espère que cela
var_dump(empty($var));
retournera faux.si vous vérifiez des éléments dans un tableau, vous devez toujours le faire en
isset($var)
premier.la source
utiliser uniquement
($_POST['input_field_name'])!=0
au lieu de!($_POST['input_field_name'])==0
0 n'est pas considéré comme vide.la source
Je ne sais pas s'il y a encore des gens à la recherche d'une explication et d'une solution. Les commentaires ci-dessus disent tout sur les différences entre VRAI / FAUX / 1 / 0.
Je voudrais juste apporter mes 2 cents pour la façon d'afficher la valeur réelle.
BOOLÉEN
Si vous travaillez avec un type de données booléen, vous recherchez un résultat TRUE vs FALSE; si vous le stockez dans MySQL, il sera stocké sous 1 resp. 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: "TRUE" ou "FALSE" ou éventuellement "1" ou "0".
Attention, tout ce qui est plus grand (ou différent) que 0 sera également considéré comme VRAI en PHP. Par exemple: 2, "abc", etc. renverront tous TRUE.
BIT, TINYINT
Si vous travaillez avec un type de données numérique, la façon dont il est stocké est le 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.
la source
bon exemple. créez simplement un champ de type int (exemple de numéro de mobile) dans la base de données et soumettez une valeur vide pour la base de données suivante via un formulaire ou insérez simplement en utilisant SQL. ce qu'il 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é sous la forme 0. Ainsi, lorsque vous récupérez des données via PHP et que vous vérifiez 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 comme float, double, decimal (decimal ont différentes variantes comme 0,000 et ainsi de suite.
la source
Vous devez utiliser isset () pour vérifier si la valeur est définie.
la source