2009-01-05 5 views
2

est-il un avantage à la rédaction d'un conditionnel comme PHP ceci:-ce que ces conditionals PHP même ou peut-on avoir un avantage

if ($variable != NULL) { 

contre

if (!empty($variable)) { 

contre

if ($variable) { 

Ne sont-ils pas tous la même chose? Il semble que le dernier est toujours le plus simple si vous essayez juste de dire si la variable existe ou non. Merci de m'avoir aidé à comprendre la différence ici. J'ai raté le premier jour de PHP 101.

Répondre

2

Je suis d'accord avec Sean, mais je vais décrire ce que chacun fait en anglais simple:

if ($variable != NULL) { 

$variable sera NULL si elle n'a pas été réglée. C'est pratiquement le même que isset et le même que la variable étant indéfinie.

if (!empty($variable)) { 

En général, ce vérifie si $variable comme une chaîne ((string) $variable) a une strlen de 0. Cependant true va le faire revenir false, tout comme des entiers qui ne sont pas 0 et des tableaux vides. Pour une raison quelconque (que je crois être faux) $variable = '0'; renverra true.

if ($variable) { 

Cela agit de contrôle vrai/faux comme (boolean) $variable - essentiellement si la variable retourne vrai lorsque converti en un booléen. Une manière d'y penser est qu'elle agit comme vide, sauf qu'elle renvoie la valeur opposée.

Pour plus d'informations sur ce que je veux dire par (boolean) $variable (type casting/jonglerie) voir ce manual page.

(PHP devs: Ceci est principalement par la mémoire, si je me trompe s'il vous plaît me corriger!)

+0

NULL n'est pas la même chose que non défini. –

6

Jetez un coup d'œil sur this table pour avoir la main sur les opérateurs de comparaison PHP. Il y a un certain nombre de différences subtiles entre false, 0, "", NULL et les variables qui sont simplement indéfinies.

+0

Je n'ai jamais su que cette table existait. Merci! – matpie

2

Lors de l'exécution en mode erreur stricte (E_STRICT), les clauses

if ($variable) {} 

et

if ($variable != null) {} 

jetteraient avis, lorsque ces variables ne sont pas initialisés.Ces notifications sont un indicateur de failles dans le code, car l'utilisation de non initialisée est une vulnérabilité de sécurité possible. (Mot-clé: register_globals).

Mon préféré pour vérifier l'existence d'une variable est

if (isset($variable)) {} 

Ce contrôle, si la variable a été utilisée (lire: initialisé avec une valeur = null).

Questions connexes