"Попытка получить свойства на не-объекте" в PHP

Я разработчик темы 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> 

Я не могу понять, что я делаю неправильно. Строка, которая специально вызывает ошибку, такова:

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

Спасибо за любой совет! :)

4 ответов


ты делаешь это пару раз:

$option->someproperty

по крайней мере в одном из случаев $option не является объектом. Когда вы делаете -> на не-объект, вы получаете эту ошибку.

во-первых, убедитесь, что $option на самом деле является объектом и исправляет использование, если это не так.

если $option является массивом, то @matthewpavkov правильно, вы должны сделать $option['someproperty'] вместо $option->someproperty.

если $option обычно является объектом, возможно get_categories() is иногда возвращаясь null или false в состоянии отказа. Проверьте это перед доступом $option.

вот так:

foreach ($value['options'] as $option)
{
    if ($option)
    {
        // do whatever;
    }
}

казалось бы $option - это массив. Попробуйте:

$option['term_id']

хорошо, я понимаю, что вы говорите. Ранее в моем коде у меня есть это (чрезмерно упрощенное, просто чтобы показать важные части):

$news_categories = get_categories()  //pulls all of the categories from WordPress

        array ("minititle"      => '<span class="mini_title">Select the category you\'d like to use as your "Top Story" category.</span>',
            "id"        => $shortname . "_top_story_category",
            "type"      => "cat_select",
            "options" => $news_categories)

вот откуда берется $value['options']. Код является частью инструкции switch...

мне пришлось бы опубликовать весь файл, чтобы дать контекст, и он довольно длинный.


выполнить его из действия...т. е.:

function your_function(){
    YOUR CODES HEREEEEEEEEEEE............
}
ADD_ACTION('init','your_function');