Подтвердить что ты не робот

Исправьте PHP-код, чтобы проверить, существует ли переменная

Этот код является частью сервера websocket:

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

Он будет либо получать json-строку, как {"sciID":67812343}, либо совершенно другую строку json без sciID, например {"something":"else"}.

Когда сервер получает позднее, он выдает: Notice: Undefined property: stdClass::$sciID in /path/to/file.php on line 10

Каков правильный код для проверки наличия $msgArray->sciID?

4b9b3361

Ответ 1

Используйте isset в качестве проверки общего назначения (вы также можете использовать property_exists, так как вы дело с объектом):

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

Ответ 3

Если isset() или property_exists() не работает, мы можем использовать array_key_exists()

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

Ответ 4

Я всегда делал isset(), но недавно я изменился на !empty() и empty, потому что это предложил один из моих друзей.

Ответ 5

Функция isset() проверяет, установлена ​​ли переменная и не является нулевой, что действительно глупо, учитывая ее имя. Если вы хотите узнать только, установлена ​​ли переменная, используйте следующую функцию:

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

Эта функция вернет true точно, когда переменная не установлена, и false в противном случае. "&" рядом с аргументом важно, потому что он сообщает PHP передавать ссылку на переменную, а не значение переменной, тем самым избегая " Примечание: Undefined переменная", когда переменная не является набор.