所以我从twitter返回数据,由于某种原因我无法返回计数数据,当我回显它时它返回的是开放的大括号..这就是我试图回应它的方式。
"statuses": [],
"search_metadata": {
"completed_in": 0.008,
"max_id": 668543797022826500,
"max_id_str": "668543797022826503",
"query": "URL",
"refresh_url": "URL",
"count": 15,
"since_id": 0,
"since_id_str": "0"
}
这就是下面代码返回的内容..我要做的就是回显count
数据,但它没有...所有它打印而不是15
是{{1} }
{
有人可以向我解释为什么不打印吗?
答案 0 :(得分:2)
试试这个:
$ajsn = json_decode($counter, true);
echo $ajsn['search_metadata']['count'];
答案 1 :(得分:0)
运行此命令时:
$counter = $connection->get("https://api.twitter.com/1.1/search/tweets.json?q=".$this->url );
$ajsn = json_encode($counter);
echo $ajsn['search_metadata']['count'];
您说“ {”。
应该得到一个字符,因为json_encode
返回的是字符串,而不是数组。并且将关键字索引到字符串中应该会给您带来错误,或者至少是警告。如果不是,则可能返回字符串的等价整数,即零。因此,您将获得JSON编码的第零个(第一个)字符。
这是一个“ {”实际上是个好消息。这意味着json_encode
确实返回了一些内容:大括号是JSON对象的开头。
您应该做的是验证 {$ counter}是什么。是物体吗?数组?然后,您可以适当地回显它。例如$counter->search_metadata->count
。
否则,由于$ajsn
是有效的字符串,因此一个快速而肮脏的丑陋解决方法是再次将其转换为数组:
$counter = $connection->get("https://api.twitter.com/1.1/search/tweets.json?q=".$this->url );
$ajsn = json_encode($counter); // Convert whatever to string
$ajsn = json_decode($ajsn, true); // Convert ajsn to associative array
echo $ajsn['search_metadata']['count'];
此外,激活所有错误和警告输出。您应该已经得到了一些东西来告诉您您所处的位置,但您一无所获-这会使调试变得不必要地复杂。使用error_reporting
和相应的php.ini设置激活屏幕显示或至少记录文件。