Предупреждение: недопустимое смещение строки в PHP 5.4

Сегодня я обновился до 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 включает:

 $meta = get_post_meta($post->ID,'_quote_source',TRUE); 

Поэтому я подозреваю, что всякий раз, когда поля кавычек пусты, это предупреждение появляется. Есть ли способ, которым я могу это исправить, когда поля пусты?

Solutions Collecting From Web of "Предупреждение: недопустимое смещение строки в PHP 5.4"

Вам нужно убедиться, что $meta – это тип массива. Предупреждение явно сообщает вам, что $meta кажется string а не array

 Illegal string offset ^^^^^^ 

Чтобы избежать этой ошибки, вы также можете проверить необходимые поля

 for($i = 0; $i < 3; $i++) { if ( !is_array($meta) || !array_key_exists('quote'. ($i+1), $meta) ){ continue; } // your code } 

Если $meta имеет значение null когда нет данных для обработки:

 if( !is_null($meta) ){ for($i = 0; $i < 3; $i++) { // ... } } 

При необходимости вы сможете сделать больше проверок. Это зависит от того, для чего get_post_meta() функция get_post_meta() .