web-dev-qa-db-ja.com

正しいPHPコードは、変数が存在するかどうかを確認します

このコードはWebSocketサーバーの一部です:

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

{"sciID":67812343}のようなjson文字列、または{"something":"else"}などのsciIDのない完全に異なるjson文字列のいずれかを受け取ります。

サーバーが後者を受信すると、エコーバックします:Notice: Undefined property: stdClass::$sciID in /path/to/file.php on line 10

$msgArray->sciIDが存在するかどうかを確認する正しいコードは何ですか?

21
JJJollyjim

isset を汎用チェックとして使用します( property_exists オブジェクトを扱っているため):

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

isset()またはproperty_exists()が機能しない場合は、 array_key_exists() を使用できます。

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

私はいつもisset()をやってきましたが、友人の1人から提案されたため、最近!empty()emptyに変更しました。

0
Joshwaa

isset()関数は、変数が設定されているか、nullではないかをチェックします。変数が設定されているかどうかだけを知りたい場合は、次の関数を使用します。

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

この関数は、変数が設定されていない場合はtrueを返し、そうでない場合はfalseを返します。 PHPにreferenceを変数に渡すように指示するため、引数の隣の「&」は重要です。変数のvalueではなく、変数が設定されていない場合に「Notice: Undefined variable」を回避します。

0
Sophivorus