Php 对象属性';s值是一个数组。收到通知/警告,另有说明

Php 对象属性';s值是一个数组。收到通知/警告,另有说明,php,arrays,object,warnings,notice,Php,Arrays,Object,Warnings,Notice,我在这里收到一个通知和一个警告,而不是一个错误。我的代码仍然有效。我只是想看看有没有人能弄明白为什么我会收到通知和警告 Notice: Trying to get property of non-object in file.php on line 152 Warning: in_array() expects parameter 2 to be array, null given file.php on line 152 第152行是if()语句: if($user->type ==

我在这里收到一个通知和一个警告,而不是一个错误。我的代码仍然有效。我只是想看看有没有人能弄明白为什么我会收到通知和警告

Notice: Trying to get property of non-object in file.php on line 152

Warning: in_array() expects parameter 2 to be array, null given file.php on line 152
第152行是if()语句:

if($user->type == 'x' && in_array($user->email, $campaign->settings->email_list))
{ do stuff }
我已经指出了
$campaign
对象的问题。在$campaign上使用print\r可输出相当多的信息,但这是重要的部分:

Campaign Object
{
    [settings] => stdClass Object
        (
            [email_list] => Array
                (
                    [0] => support@domain.com
                    [1] => customer@domain.com
                )
        )
}

显然,$campaign->settings->email\u列表是一个数组。那么,为什么我会收到通知和警告呢<代码>$campaign是在第152行的正上方创建的。

我认为您可能会收到此通知,因为分配给
$campaign->settings
活动内部对象的可能未初始化(可能是
null
值)。
请使用
var\u dump($campaign->settings)
数组中的
函数中的行前面确保属性的实际值是多少。

请稍后再试,它会起作用

$campaign['settings']['email_list']

我应该在我原来的帖子里写上,但我已经写了<代码>变量转储($campaign->settings)
输出`对象(stdClass)#14(7){[“电子邮件列表”]=>数组(2){[0]=>字符串(19)”support@domain.com“[1]=>字符串(19)”customer@domain.com" }" }很抱歉,您编写了您使用的print\r。然而,注意:尝试获取file.php中第152行的non-object属性指向该方向。这很奇怪:)感谢您的帮助!只有当
$campaign
是一个数组,并且它的
settings
元素是一个数组时,这才有效。因为我处理的是对象,所以这个particular解决方案不适用。请检查此链接,您将获得一个想法