我的twitter插件一直出现这个错误:
致命错误:无法在第72行的C:....中使用stdClass类型的对象作为数组
它有时只显示,但我的推特计数器在相当长的一段时间内没有改变。你能帮忙吗?代码如下,关于行位于中间:update_option('pyre_twitter_followers',$ json [0] - > user-> followers_count);
<?php if(get_option('pyre_twitter_id')): ?>
<div class="social-box">
<a href='http://twitter.com/<?php echo get_option('pyre_twitter_id'); ?>'>
<img src="<?php echo get_template_directory_uri(); ?>/images/twitter.png" alt="Follow us on Twitter" width="48" height="48" /></a>
<?php
$interval = 3600;
if($_SERVER['REQUEST_TIME'] > get_option('pyre_twitter_cache_time')) {
@$api = wp_remote_get('http://twitter.com/statuses/user_timeline/' . get_option('pyre_twitter_id') . '.json');
@$json = json_decode($api['body']);
if(@$api['headers']['x-ratelimit-remaining'] >= 1) {
update_option('pyre_twitter_cache_time', $_SERVER['REQUEST_TIME'] + $interval);
update_option('pyre_twitter_followers', $json[0]->user->followers_count);
}
}
?>
<div class="social-box-text">
<span class="social-arrow"></span>
<span class="social-box-descrip"><?php _e('Follow us on Twitter', 'pyre'); ?></span>
<span class="social-box-count"><?php echo get_option('pyre_twitter_followers'); ?> <?php _e('Followers', 'pyre'); ?></span>
</div>
</div>
<?php endif; ?>
答案 0 :(得分:0)
数组和对象具有不同的语法:
$array = array(
'foo' => 'bar',
);
$object = (object)$array;
var_dump($array['foo'], $object->foo);
不能使用stdClass类型的对象作为数组错误消息在这一行引用数组语法(方括号):
update_option('pyre_twitter_followers', $json[0]->user->followers_count);
^^^
如果它有效,它会出现$json
是一个对象的情况,以及它是一个数组的情况。变量来自这里:
$json = json_decode($api['body']);
docs for json_decode()
通知我们第二个参数决定是生成对象还是数组:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
<强> ASSOC 强> 当
TRUE
时,返回的对象将被转换为关联数组。
答案 1 :(得分:0)
json_decode()
函数有两个参数。如果需要数组表示,则需要传递true
作为第二个参数值。否则,它默认生成一个对象表示。