在PHP中"尝试在非对象上获取属性"

orb*_*t82 6 php wordpress

我是一个WordPress主题开发人员,在我正在研究的主题上,我打开了调试模式,并在主题选项页面的选择下拉框中显示此错误.

错误说明了这一点:"试图获取非对象的属性." 这是违规代码:

 <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
                <?php foreach ($value['options'] as $option) { ?>
               <option value="<?php echo $option->term_id; ?>"  <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>>
                    <?php echo $option->name; ?>
                </option>                       
               <?php }?>  </select> 
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我做错了什么.特别导致错误的行是这样的:

<option value="<?php echo $option->term_id; ?>"  <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>>
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议!:)

eva*_*van 7

你这样做了几次:

$option->someproperty
Run Code Online (Sandbox Code Playgroud)

在至少一种情况下$option不是对象。当你->在一个非对象上做时,你会得到那个错误。

首先,验证它$option实际上是一个对象,如果不是,则更正用法。

如果$option是一个数组,那么@matthewpavkov 是正确的,你应该做$option['someproperty']而不是$option->someproperty.

If$option通常是一个对象,也许get_categories()有时会返回nullfalse处于失败状态。在访问$option.

像这样:

foreach ($value['options'] as $option)
{
    if ($option)
    {
        // do whatever;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 天哪,埃文,这奏效了!哇,我已经解决这个问题将近两天了,这个简单的语句修复了它。非常感谢,感谢所有回答的人,我真的很感谢你的帮助!! (2认同)