注意:未定义的属性 - 如何在PHP中避免该消息?

EOB*_*EOB 8 null properties php-5.3

您好我正在打这个电话:

$parts = $structure->parts;
Run Code Online (Sandbox Code Playgroud)

现在$ structure只在特殊情况下有部分,所以调用返回null.这对我很好,我的代码后面有一个if($ parts){...}.不幸的是,在代码运行完毕后,我收到此消息:

注意:未定义的属性:stdClass :: $ parts in ...

我怎么能压制这个消息?

谢谢!

Nit*_*ram 25

该功能isset应该完全符合您的需要.

PHP:isset - 手动

例:

$parts = (isset($structure->parts) ? $structure->parts : false);
Run Code Online (Sandbox Code Playgroud)


Ayd*_*4ik 14

2020 年来到这里,很惊讶没有人提到:

1.从 PHP 7.0 开始

$parts = $structure->parts ?? false;
Run Code Online (Sandbox Code Playgroud)

2.一种令人皱眉的做法- stfu 操作员

$parts = @$structure->parts;
Run Code Online (Sandbox Code Playgroud)


Ped*_*tre 6

也许这个

$parts = isset($structure->parts) ? $structure->parts : false ;
Run Code Online (Sandbox Code Playgroud)


Vis*_*hal 5

在property_exists()的帮助下,您可以轻松地从 php 文件中删除“未定义的属性”通知。

以下是示例:

if (property_exists($structure,'parts')) {
    $parts = $structure->parts;
}
Run Code Online (Sandbox Code Playgroud)

了解更多http://php.net/manual/en/function.property-exists.php