试图获得 属性 'values' 的非对象

Trying to get property 'values' of non-object

我正在尝试让这段代码正常工作。但这是行不通的。但是当我用静态数字替换 $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>';
        }

问题是我收到此错误 "Trying to get property 'values' of non-object"

问题在这里:

您正在遍历项目集合。对于这些项目中的每一个,你都会做一些事情。如果对于集合中的 one 项,此内容将不起作用(抛出错误),错误消息不会告诉您是哪个。

如果您现在从集合中选择一个项目,您就知道您所做的事情正在处理(这里:有一个 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>';
}