2010-02-17 5 views
1
array(4) { ["id"]=> int(0) ["pass"]=> string(0) "" ["log_in"]=> string(3) "no" } 

Le problème id lors de l'utilisation isset il retourne true parce qu'il est 0. En utilisant vide, je pense qu'il fait la même chose. Quelle est la meilleure fonction pour savoir si c'est réglé ou non?comportement PHP inattendu dans isset et vide

+0

peut-être si (! Empty ($ array ["id"]) {echo "L'ID du tableau est défini";}, je pense que le retour vide est faux si 0 est un entier – ahmet2106

Répondre

5

empty fausses déclarations de ce genre:

  • "" (une chaîne vide)
  • 0 (0 sous forme d'entier)
  • "0" (0 sous forme de chaîne)
  • NULL
  • FALSE
  • array() (un tableau vide)
  • var $var (une variable déclarée, mais sans valeur dans une classe)

Vous devez utiliser isset au lieu de vérifier si elle est là.

Voir cet article sur empty vs isset pour plus d'informations.

1

simple si la condition va faire pour vous

 
if(id) 
{ 
} 

essayer si cela fonctionne.

+0

son $ _SESSION ["id"] si cela va fonctionner? –

+0

alors faites comme ça if ((isset ($ _ SESSION ['id']) &&! Empty ($ _ SESSION ['id'])) cela devrait fonctionner –

2
if($array['id'] === 0) { 
    true 
} ? 
1

si id est un identifiant de base de données est un entier positif

donc if($id>0) est une solution simple

OU

preg_match('#^[0-9]*$#', $id) 

une autre

Questions connexes