我正在尝试使此代码正常工作。但这是行不通的。但是,当我用静态数字替换 $ 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>';
}
问题是我收到此错误“试图获取非对象的属性'值'
答案 0 :(得分:1)
问题在这里:
您正在遍历一系列项目。对于每个项目,您都会做一些事情。如果对于收藏夹中的一个项目,该东西不起作用(引发错误),则错误消息不会告诉您哪个。
如果您现在从集合中选择一个项目,则知道您正在处理的东西(在这里:具有item_id
),这也就不足为奇了。
如何规避此事?
首先,您应该检查实际数据中是否有任何缺陷。为此,请在错误发生之前检查数据的值(print_r
,var_dump
或使用xdebug)。您会发现并非每个项目都有一个field['brugernavn']
为避免此错误:在做填充之前,请确保填充可以正常工作。在您的情况下,您应该检查field['brugernavn']
是否存在并且具有合理的值,例如:
if (isset($test->fields['brugernavn']) && isset($test->fields['brugernavn']->values)) {
print $test->fields['brugernavn']->values . '<br>';
}