【发布时间】:2013-04-22 06:16:34
【问题描述】:
我今天升级到 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);
所以我怀疑每当引号字段为空时,都会出现此警告。当字段为空时,有什么办法可以解决这个问题?
【问题讨论】:
-
quote1_title和quote1在 $meta 数组中不存在。你能告诉我们你的 $meta 内容吗? -
var_dump($meta)显示什么?它可能不是一个数组。 -
这是一个 Wordpress 网站的插件:
$meta = get_post_meta($post->ID,'_quote_source',TRUE); -
消息很清楚(
$meta是一个字符串,而不是一个数组),Marc 的提示 (var_dump()) 是确定的方法。代码属于未公开的 Wordpress 插件这一事实并没有改变这一点,因为 Wordpress 插件也是 PHP 代码。 -
在引用字段中没有写入任何内容的页面上执行
var_dump($meta)时,它会显示NULL。这是我收到警告的时候。但是,在已填写报价字段的页面上,它可以正常工作。我该如何解决这个问题?