Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON cURL-foreach()的参数无效-PHP_Php_Json_Foreach - Fatal编程技术网

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循环中可以读取当前项的文本值。