如何解析JSON数组并检索PHP字符串变量?

时间:2018-08-22 04:43:03

标签: php arrays json curl

好的...到目前为止,以下工作正常:

// 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['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 "ID: $event_id<br> 
          NAME: $name<br>
          DESCRIPTION: $desc<br>
          <br>";
} 

但是,我正在尝试多种操作,但无法在同一JSON输出中从数组中捕获“ primaryImage”和“ categories”数据,并且语法有困难。这是数据示例:

{
  "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
}

我想将数据用作在“ primaryImage”,“ categories”,“ location”等元素中找到的PHP字符串变量。

1 个答案:

答案 0 :(得分:0)

应该是这样的:

echo $item['primaryImage']->smallImageUrl;