web-dev-qa-db-fra.com

Corriger PHP code pour vérifier si une variable existe

Ce code fait partie d'un serveur websocket:

$msgArray = json_decode($msg);
if ($msgArray->sciID) {
  echo "Has sciID";
}

Il recevra soit une chaîne json comme {"sciID":67812343} ou une chaîne json complètement différente sans sciID telle que {"something":"else"}.

Lorsque le serveur reçoit la dernière, il fait écho: Notice: Undefined property: stdClass::$sciID in /path/to/file.php on line 10

Quel est le bon code pour vérifier si $msgArray->sciID existe?

21
JJJollyjim

Utilisez isset comme vérification générale (vous pouvez également utiliser property_exists puisque vous avez affaire à un objet):

if (isset($msgArray->sciID)) {
    echo "Has sciID";
}
59
Ross
7

Dans le cas où isset() ou property_exists() ne fonctionne pas, nous pouvons utiliser array_key_exists()

if (array_key_exists("key", $array)) {
    echo "Has key";
}
4
Petr Hurtak

J'ai toujours fait isset() mais j'ai récemment changé pour !empty() et empty parce qu'un de mes amis l'a suggéré.

0
Joshwaa

La fonction isset() vérifie si une variable est définie et n'est pas nulle , ce qui est vraiment stupide, étant donné son nom. Si vous voulez seulement savoir si une variable est définie, utilisez la fonction suivante:

function is_set( & $variable ) {
    if ( isset( $variable ) and ! is_null( $variable ) )
        return true;
    else
        return false;
}

Cette fonction renverra true exactement lorsque la variable n'est pas définie et false sinon. Le '&' à côté de l'argument est important, car il indique PHP pour passer une référence à la variable, et non la valeur de la variable, évitant ainsi une "Remarque: variable non définie" lorsque la variable n'est pas définie.

0
Sophivorus