警告:PHP 5.4中的非法字符串偏移量

Hen*_*son 0 php string warnings

我今天升级到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
Run Code Online (Sandbox Code Playgroud)

这些行是代码的这一部分:

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++;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以$tmp_url$tmp_title行.

为什么我收到这个奇怪的警告,解决方案是什么?

更新:

此代码用作Wordpress插件.$ meta包括:

$meta = get_post_meta($post->ID,'_quote_source',TRUE);
Run Code Online (Sandbox Code Playgroud)

所以我怀疑只要引号字段为空,就会出现此警告.当字段为空时,有什么方法可以解决这个问题吗?

Mat*_*aug 7

你需要确保,这$meta实际上是类型数组.警告明确告诉你,这$meta似乎是一个string 而不是一个array

Illegal string offset
        ^^^^^^
Run Code Online (Sandbox Code Playgroud)

为避免此错误,您还可以检查所需的字段

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