robin 2008-3-21 14:22
“Cannot use object of type stdClass as array in XXX”错误及其解决方法
以下是一段报错的代码
[php]
foreach ($cats as $cat)
{
if($wp_version >= 2.1) {
//var_dump($cat);
$num_links[$cat['link_category']] = $cat->link_count;
}
else {
$num_links[$cat['link_category']] = $wpdb->get_results("SELECT count(*) FROM `$wpdb->links` WHERE link_category = " . $cat['link_category'], ARRAY_A);
}
}
[/php]
报错的就是第5行
[php] $num_links[$cat['link_category']] = $cat->link_count;
[/php]
原因是用foreach取出来的$cat变量是一个[b]Object[/b],而不是[b]Array[/b],所以无法用上述方法调用,从而抛出”[b]Cannot[/b] [b]use[/b] [b]object[/b] [b]of[/b] [b]type[/b] [b]stdClass[/b] [b]as[/b] [b]array[/b] in XXX”的异常。
解决办法是用访问对象属性的方法,将$cat[’link_category’]改为$cat->link_category就可以解决问题。Durable报错都是因为这个问题
因为我只在PHP5里做过测试,所以不知道PHP4是否也有类似情况出现。
极品黑公子 2008-3-21 14:38
$cats 是一个类的数据元素 $cats=$temp_class->cat;这样来的 可以也是因为这样才对下面的访问方式有影响的吧:09:
lipeng8821 2008-3-21 15:01
:06: 看不懂。。解释一下 代码啥意思。。