"Попытка получить свойства на не-объекте" в 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;
}
}
хорошо, я понимаю, что вы говорите. Ранее в моем коде у меня есть это (чрезмерно упрощенное, просто чтобы показать важные части):
$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');