试图获取非对象的属性“值”

时间:2019-02-07 12:01:30

标签: php laravel-5.6

我正在尝试使此代码正常工作。但这是行不通的。但是,当我用静态数字替换 $ item-> item_id 时,代码可以正常工作,而不能动态输出。

foreach ($collection as $item) {

            print 'title: '. $item->title . '<br>';
            print 'link: '. $item->link . '<br>';
            print 'item_id: '. $item->item_id  . '<br>';

            $test = PodioItem::get_basic($item->item_id); // replace it with a static number
            print $test->fields['brugernavn']->values . '<br>';
        }

问题是我收到此错误“试图获取非对象的属性'值'

enter image description here

1 个答案:

答案 0 :(得分:1)

问题在这里:

您正在遍历一系列项目。对于每个项目,您都会做一些事情。如果对于收藏夹中的一个项目,该东西不起作用(引发错误),则错误消息不会告诉您哪个。

如果您现在从集合中选择一个项目,则知道您正在处理的东西(在这里:具有item_id),这也就不足为奇了。

如何规避此事?

首先,您应该检查实际数据中是否有任何缺陷。为此,请在错误发生之前检查数据的值(print_rvar_dump或使用xdebug)。您会发现并非每个项目都有一个field['brugernavn']

为避免此错误:在做填充之前,请确保填充可以正常工作。在您的情况下,您应该检查field['brugernavn']是否存在并且具有合理的值,例如:

if (isset($test->fields['brugernavn']) && isset($test->fields['brugernavn']->values)) {
    print $test->fields['brugernavn']->values . '<br>';
}