试图让非对象的特性“值”

问题描述 投票:0回答:1

我试着去得到这个代码的工作。但它不会工作。但是,当我更换$用品 - > 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

php laravel-5.6
1个回答
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>';
}
© www.soinside.com 2019 - 2024. All rights reserved.