2010-03-14 4 views
1

salut j'ai essayé 2 choses qui devraient être les mêmes mais il mes tests différents dit que quelqu'un sait pourquoi la seule chose que je fais est mis dans une variable ...PHP: pourquoi est-ce différent de nulle autre nul

if ($_SESSION[$something] === null) 
     echo("this is null"); 

$ _SESSION [$ quelque chose] n'existe pas, il dit en effet: "c'est nulle". Regardons maintenant ce

$theSession = $_SESSION[$something]; 

if ($theSession === null) 
    echo("this is null"); 

maintenant il ne dit pas «c'est nul » alors qu'il devrait être exactement le même droit?

+7

Avez-vous oublié le '' $ dans votre deuxième extrait, avant 'theSession'? – Pindatjuh

+0

mon mauvais a laissé le $ il est supposé être avec le $ – matthy

Répondre

3

Vous avez besoin d'un $ devant theSession dans le deuxième bloc de code.

Vous ne peut pas besoin de $ devant something. Vous en avez seulement besoin si $ quelque chose contient une chaîne du nom de la variable de session. Sinon, si quelque chose est le nom de la variable de session, vous n'avez pas besoin de $.

+1

Très probablement le $ dans $ quelque chose _is_ utile, comme dans '$ something = 'xyz'; echo $ _SESSION [$ quelque chose]; ' – VolkerK

+0

oh .. vrai que je ne pensais pas que cela ... –

+1

aussi si vous vous débarrasser de $, vous devez citer la chaîne –

0

Vous devriez également envisager d'utiliser is_null pour vérifier est une variable contient une valeur nulle.

+0

une raison particulière? Les commentaires sur cette page de documentation disent que c'est plus lent (par une marge sans importance, mais quand même). – nickf

+0

Lisibilité principalement. if (is_null ($$ something)) {... est aussi simple que possible. –

Questions connexes