En PHP, je veux vérifier si une variable n'a pas été définie/définie, où la définition d'une variable NULL est considérée comme définie/définie.
Je suis au courant de tout ici: http://php.net/manual/en/types.comparisons.php y compris isset (), empty () et is_null (). Aucun de ceux-ci ne semble être ce que je recherche. Prenons l'exemple suivant:
<?php
$myNull = null;
echo 'isset($myNull): "'.isset($myNull).'"<br />';
echo '$myNull value = "'.$myNull . '"<br />';
echo "<br />";
echo 'isset($myUndefined): "'.isset($myUndefined).'"<br />';
echo '$myUndefined value = "'.$myUndefined . '"<br />';
?>
Cet exemple génère quelque chose comme:
isset ($ myNull): ""
$ myNull value = ""
isset ($ myUndefined): ""
Remarquer: Undefined variable: myUndefined dans C:\wamp\www\plm\temp4.php sur la ligne 9
$ myUndefined value = ""
Je veux savoir si une variable est Undefined comme il est dit ci-dessus dans l'avis. Je veux une fonction, appelez-la "is_undefined", où
$myNull = null;
is_undefined($myNull); // is false
is_undefined($myUndefined); // is true
N'importe qui? Merci d'avance.
Je ne l'ai pas encore utilisé - mais je pense que "get_defined_vars" devrait valoir le coup d'œil ... http://php.net/manual/en/function.get-defined-vars.php =
Je voudrais essayer et vider le résultat.
Je pense que get_defined_vars est un bon candidat pour un tel travail:
array_key_exists('myNull', get_defined_vars());
Devrait faire ce que vous attendez.
Si vous travaillez sur un contexte global, vous pouvez également utiliser:
array_key_exists('myNull', $GLOBALS);
Si vous voulez une fonction is_undefined, je préférerais ne pas travailler avec des tableaux donc je ferais ceci:
function is_undefined(&$test) {
return isset($test) && !is_null($test);
}
Ainsi, lorsque vous echo isset($myNull);
il convertit le booléen (true) en "". c'est pourquoi la valeur est vide. Si vous voulez le voir à l'écran, vous pouvez faire var_dump(isset($myNull));
qui s'affichera si c'est vrai ou faux.
Vous avez également un écho de $ myUndefined mais il n'est pas encore défini, c'est pourquoi vous obtenez un avertissement. Ce que vous voulez faire, c'est:
if (!empty($myUndefined)) {
// variable is defined so do something with it
echo '$myUndefined value = "' . $myUndefined . '"<br />';
} else {
echo 'Oops, $myUndefined is Undefined!<br />";
}
Voici un bref aperçu de isset () vs is_null () vs empty ()
$foo = null;
// isset($foo) == true;
// empty($foo) == true;
// is_null($foo) == true;
// Notice I don't set $foo2 to anything
// isset($foo2) == false;
// empty($foo2) == true;
// is_null($foo2) throws a notice!
$foo3 = false;
// isset($foo2) == true;
// empty($foo2) == true;
// is_null($foo2) == false;
$foo4 = 1234;
// isset($foo2) == true;
// empty($foo2) == false;
// is_null($foo2) == false;
Vous pouvez également utiliser compact()
, si la variable que vous lui donnez n'est pas dans la table des symboles, elle retourne un tableau vide, sinon un tableau contenant la paire nom/valeur de la variable , transformez simplement le résultat en booléen
<?php
$myNull = null;
$isDefined = (bool) compact('myNull'); // true
$otherIsDefined = (bool) compact('myUndefined'); // false
Oui, tout comme M. Jonathan mentionné ci-dessus, nous pourrions utiliser array_key_exists () + $ GLOBALS plutôt que get_defined_vars () pour identifier la variable non définie à null
$x; // $x is undefined
$y=null; // $y is defined and is NULL type variable with the only null value
$z=[]; // $z is an array object
if( array_key_exists('x', $GLOBALS) && is_null($x) ) echo "\$x exists and is null\n";
if( array_key_exists('y', $GLOBALS) && is_null($y) ) echo "\$y exists and is null\n";
if( array_key_exists('z', $GLOBALS) && is_null($z) ) echo "\$he exists and is null\n";
// output
$y exists and is null
Si vous utilisez OOP alors utilisez la surcharge __isset()
cette fonction s'exécutera lorsque vous essayez d'accéder à une variable qui n'est définie nulle part. Exemple:
public function __isset($name) {
echo 'Hello';
}
Ainsi, évitera tout message d'erreur ou avis lié à une variable non définie