JSON cURL-foreach()的参数无效-PHP
我正在使用以下代码:JSON cURL-foreach()的参数无效-PHP,php,json,foreach,Php,Json,Foreach,我正在使用以下代码: <?php $json_url = 'http://search.twitter.com/search.json?q=royal&wedding'; $ch = curl_init( $json_url ); $options = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array('Content-type: application/json') ); cu
<?php
$json_url = 'http://search.twitter.com/search.json?q=royal&wedding';
$ch = curl_init( $json_url );
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json')
);
curl_setopt_array( $ch, $options );
$result = curl_exec($ch);
if (!empty($result)){
$json = json_decode($result);
foreach ($json->results[0]->text as $t){
var_dump($t);
}
}
?>
但我得到的是一个无效的foreach论点
有什么想法吗?检查卷曲请求是否成功:
$result = curl_exec($ch);
if ($result === FALSE) {
die(curl_error($ch));
}
$json = json_decode($result);
if(is_null($json)) {
die(json_last_error());
}
然后检查您是否实际收到了JSON数据:
var_dump($result);
然后检查json_解码是否成功:
$result = curl_exec($ch);
if ($result === FALSE) {
die(curl_error($ch));
}
$json = json_decode($result);
if(is_null($json)) {
die(json_last_error());
}
然后检查json数据中是否存在“结果”条目:
if (!isset($json->results)) {
die("No results section");
}
想法:
$result
不是有效的JSON,并且您的$result
不是数组。您正在循环第一个结果的文本属性。如果要为每个结果输出文本
,则需要循环结果:
foreach ($json->results as $t){
var_dump($t->text);
}
尝试:
你会得到这样的结果:
string(166) "RT @womensweard...
这意味着,您正在尝试对字符串进行迭代
我想,你想要的是:
foreach ($json->results as $t){
var_dump($t->text);
}
将CURLOPT_SSL_VERIFYPEER=>false添加到TwitterAPIExchange.php中performRequest()方法中的CURL选项似乎可以解决这个问题
cf我不知道json_decode是如何工作的,但乍一看,您似乎在搜索json输出结果[0]的文本值。这是错误的。尝试迭代$json results变量,在foreach循环中可以读取当前项的文本值。