0

今日、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);

したがって、引用符フィールドが空の場合は常にこの警告が表示されると思われます。フィールドが空の場合にこれを修正できる方法はありますか?

4

2 に答える 2

7

$metaそれが実際には配列型であることを確認する必要があります。警告は明示的にあなたに伝えます、 それ$metastringarray

Illegal string offset
        ^^^^^^

このエラーを回避するには、必要なフィールドを確認することもできます

for($i = 0; $i < 3; $i++) {
    if ( !is_array($meta) || !array_key_exists('quote'. ($i+1), $meta) ){
         continue;
    }
    // your code
}
于 2013-04-28T15:13:42.473 に答える