PHP和yql -获取数据有问题


php and yql - having problems getting to the data

所以我在玩雅虎的yql。我让它生成一个url和url看起来像它返回解码json给我。如果我试图解码yql url的输出,我没有得到结果(所以假设我在那里)

$c =curl_init("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20state%3D'delaware'%20and%20city%20%3D%20'smyrna'%20and%20query%3D'pizza'&format=json"); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 20); // query times out after 20 seconds
$data = curl_exec($c); // I asked for data format to be in json in the query it appears to be returned decoded
curl_close($c);
    //print_r($data);
    //$arr[] = $data; (returning results in decoded json)
    //print_r($arr); (returning results)
foreach($data->query->results->result as $result)
{
    echo 'blah blah blah';
}

然而,无论我怎么做,我似乎都无法访问前一行的输出。我做错了什么?

Thanks in advance

你必须先解码json字符串,否则它仍然是一个纯文本字符串:

$data = curl_exec($c);
if ($data === FALSE) {
    die("Curl failed with error: " . curl_error($c));
}
$data = json_decode($data);
if (is_null($data)) {
    die("json_decode failed with error: " . json_last_error());
}
foreach(...) {
}

注意我已经添加了错误处理-你的代码没有错误处理,并假设curl调用成功。这是一种糟糕的方式,因为你不能依赖外部资源来呈现或功能。在继续之前总是检查外部资源请求是否成功。