卷曲/ PHP / JSON - 为什么我无法解析的结果吗? [重复](cURL / PHP

2019-10-29 07:44发布

这个问题已经在这里有一个答案:

  • 如何从JSON中提取数据与PHP? 5个回答

我使用下面的代码从JSON结果的API中提取数据。

// Open connection
$ch = curl_init();

// Make the curl call
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$head = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);


  $data = json_decode($head,true); 
   foreach($data as $item) {
    $name = $item['name'];
    $description = $item['description'];
    echo "NAME: $name DESCRIPTION: $description";

 }

如果我使用的print_r($头)我看到所有的结果,所以我知道网址,用户名,密码是好的,但在代码的最后echo语句不产生结果。

这是什么样的JSON看起来,当我的print_r($头)像一个样本。 有一些是至少。

{"events":[{"eventId":5183191,"name":"The Rhythm Rockets - FREE","description":"Summer Concert Series - The Rhythm Rockets . .\nFREE. Look for a YELLOW balloon. Bring a chair. PLEASE BE ON TIME (6:00 PM!) TO SIT WITH THE GROUP. Allow time for street parking. Expect a crowd. Meetup at 6pm - Showtime is 7pm. Food, wine and beer will be on sale.\nIn case of inclement weather, concerts will be held indoors at the Lincoln Center, 935 Maple Avenue. For weather updates, call[masked] after 5:30 pm. If moved inside, there is no way we can sit together.","primaryImage":{"smallImageUrl":"https://domainnamestorage.blob.core.windows.net/portalimages/portalimages/71021444-d72d-456c-a419-36b61ead5259.small.png","mediumImageUrl":"https://domainnamestorage.blob.core.windows.net/portalimages/portalimages/71021444-d72d-456c-a419-36b61ead5259.medium.png","largeImageUrl":"https://domainnamestorage.blob.core.windows.net/portalimages/portalimages/71021444-d72d-456c-a419-36b61ead5259.large.png"},"categories":[{"categoryId":2,"parentCategoryId":null,"name":"Performing Arts"},{"categoryId":12,"parentCategoryId":null,"name":"Food & Drink"},{"categoryId":17,"parentCategoryId":2,"name":"Music"},{"categoryId":75,"parentCategoryId":12,"name":"Drinks"},{"categoryId":100,"parentCategoryId":17,"name":"Concerts"}],"location":{"latitude":41.792683,"longitude":-88.011765,"city":"Downers Grove","state":"IL","address":"1000 Grove St","country":"United States","locationName":"Fishel Park"},"instances":[{"startDateTime":"2018-08-21T18:00:00Z","endDateTime":null,"hasTime":true,"allDay":false}],"price":{"lowerPrice":null,"upperPrice":null,"free":false,"description":null},"lastUpdatedDate":"2018-07-26T02:20:49.686Z","popularity":null,"interest":50,"links":[{"isSponsor":false,"name":"Meetup","linkUrl":"https://www.meetup.com/Im-Not-Dead-Yet-50-plus/events/252406255/","logoUrl":null},{"isSponsor":true,"name":"I'm Not Dead Yet --- 50+ Meetup","linkUrl":"http://Meetup.com/Im-Not-Dead-Yet-50-plus","logoUrl":null},{"isSponsor":true,"name":"I'm Not Dead Yet --- 50+ Meetup","linkUrl":"http://Meetup.com/Im-Not-Dead-Yet-50-plus","logoUrl":null}],"previousEventIds":[],"seriesStart":"2018-08-21T18:00:00Z","seriesEnd":null,"url":"http://portal.domainname.com/m/FireVite#!/details/THE-RHYTHM-ROCKETS-FREE/5183191/2018-08-21T18","handPicked":false,"customField":null,"contact":{"organization":null,"name":null,"email":null,"phone":null},"media":null}

Answer 1:

你的解码后,$数据将调用每一个元素是你想看看阵列事件的数组。 尝试:

foreach ($data['events'] as $item)...


Answer 2:

print_r()没有意义的string ,但仅限于arrayobject

这可能是相当的一致好评这个(也许你必须使用$data['events']代替)

当使用$data = json_decode($response); 这将是$data->events

$data = json_decode($response, true);

// die('<pre>'.print_r($data, true).'</pre>');

foreach($data['events'] as $key => $item) {

    // $event_id = $data['events'][$key]['eventId'];
    $event_id = $item['eventId'];

    // $name = $data['events'][$key]['name'];
    $name = $item['name'];

    // $desc = $data['events'][$key]['description'];
    $desc = $item['description'];

    echo "KEY: $key, ID: $event_id, NAME: $name, DESCRIPTION: $desc";
}

这些行内注释只是表明,实际被访问了什么。



文章来源: cURL / PHP / JSON - Why am I unable to parse results? [duplicate]