Я обновился до PHP 5.4 сегодня и получаю странные предупреждения:
Warning: Illegal string offset 'quote1' in file.php on line 110
Warning: Illegal string offset 'quote1_title' in file.php on line 111
Эти строки являются частью кода:
for($i = 0; $i < 3; $i++) {
$tmp_url = $meta['quote'. ($i+1)];
$tmp_title = $meta['quote' . ($i+1) .'_title'];
if(!empty($tmp_url) || !empty($tmp_title)) {
$quotes[$src_cnt] = array();
$quotes[$src_cnt]['url'] = $tmp_url;
$quotes[$src_cnt]['title'] = $tmp_title;
$src_cnt++;
}
}
Итак, строки $tmp_url
и $tmp_title
.
Почему я получаю это странное предупреждение и каково решение?
Обновление:
Этот код используется в качестве плагина Wordpress. $мета включает в себя:
$meta = get_post_meta($post->ID,'_quote_source',TRUE);
Поэтому я подозреваю, что всякий раз, когда поля кавычек пусты, появляется это предупреждение. Есть ли способ исправить это, когда поля пусты?
quote1_title
иquote1
не существуют в вашем массиве $meta. Можете ли вы показать нам свое содержимое $meta. - person Adrian   schedule 28.04.2013var_dump($meta)
? Вероятно, это не массив. - person Marc B   schedule 28.04.2013$meta = get_post_meta($post->ID,'_quote_source',TRUE);
- person Henrik Petterson   schedule 28.04.2013$meta
— это строка, а не массив), и совет Марка (var_dump()
) — это способ узнать наверняка. Тот факт, что код принадлежит неизвестному подключаемому модулю Wordpress, ничего не меняет, потому что подключаемые модули Wordpress также являются кодом PHP. - person Álvaro González   schedule 28.04.2013var_dump($meta)
на странице, где в полях котировок ничего не было написано, показываетNULL
. Это когда я получаю предупреждение. Однако на страницах, где были заполнены поля цитаты, он работает нормально. Как мне это решить? - person Henrik Petterson   schedule 28.04.2013