How to loop through JSON array using PHP - php

My PHP code:
$obj = json_decode($data);
print $obj->{'name'};
While it works for non-arrays, I can't for the life of me figure out how to print all the values within the "Reviews" Array.
What I would like to do is to loop through this response, probably with forreach(), resulting in a list containing the rating and excerpt for each review in the response.
Any guidance / direction is greatly appreciated..
Below is the JSON I'm working with. (it is the response from the Yelp API).
{
"is_claimed": true,
"rating": 4.5,
"mobile_url": "http://m.yelp.com/biz/economy-paint-and-collision-riverside",
"rating_img_url": "http://s3-media2.ak.yelpcdn.com/assets/2/www/img/99493c12711e/ico/stars/v1/stars_4_half.png",
"review_count": 19,
"name": "Economy Paint & Collision",
"snippet_image_url": "http://s3-media3.ak.yelpcdn.com/photo/ZOzoahw0Go_DEPLvxCaP_Q/ms.jpg",
"rating_img_url_small": "http://s3-media2.ak.yelpcdn.com/assets/2/www/img/a5221e66bc70/ico/stars/v1/stars_small_4_half.png",
"url": "http://www.yelp.com/biz/economy-paint-and-collision-riverside",
"reviews": [
{
"rating": 3,
"excerpt": "The Good:\nDennis quoted me a price over the phone about 1 month before I took my wifes 2010 Escalade in for repairs and when I took it in he gave me the...",
"time_created": 1357010247,
"rating_image_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/34bc8086841c/ico/stars/v1/stars_3.png",
"rating_image_small_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/902abeed0983/ico/stars/v1/stars_small_3.png",
"user": {
"image_url": "http://s3-media3.ak.yelpcdn.com/photo/mIsU7ugYd88lLA-XL2q1Cg/ms.jpg",
"id": "V9MDZvEBv-tBTF4YIoc7mg",
"name": "Sydney H."
},
"rating_image_large_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/e8b5b79d37ed/ico/stars/v1/stars_large_3.png",
"id": "HfOhzLIlJoUKSKU8euclqA"
},
{
"rating": 5,
"excerpt": "Dennis and his team did an amazing job on the roof of my fiancee's 2002 Acura RSX after years of living by the beach in San Francisco had mostly rusted...",
"time_created": 1354741952,
"rating_image_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/f1def11e4e79/ico/stars/v1/stars_5.png",
"rating_image_small_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/c7623205d5cd/ico/stars/v1/stars_small_5.png",
"user": {
"image_url": "http://s3-media3.ak.yelpcdn.com/photo/ZOzoahw0Go_DEPLvxCaP_Q/ms.jpg",
"id": "kOqCnCjYn0EbAhtH1tfjcw",
"name": "Jason H."
},
"rating_image_large_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/22affc4e6c38/ico/stars/v1/stars_large_5.png",
"id": "YzZg1LX6zeRaurq9tYUcMw"
},
{
"rating": 5,
"excerpt": "It's been a year since I had my car painted here, and I gotta say: It still looks just as good as it did when I first picked it up. You would never know...",
"time_created": 1361043626,
"rating_image_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/f1def11e4e79/ico/stars/v1/stars_5.png",
"rating_image_small_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/c7623205d5cd/ico/stars/v1/stars_small_5.png",
"user": {
"image_url": "http://s3-media1.ak.yelpcdn.com/photo/58coTtu1x5riHSgFEAQsfw/ms.jpg",
"id": "kVrW3138d5VL-AZ97wFF4A",
"name": "Jeanne M."
},
"rating_image_large_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/22affc4e6c38/ico/stars/v1/stars_large_5.png",
"id": "r5WtlQVMXiIMBR6S3N7RZw"
}
],
"phone": "9517870227",
"snippet_text": "Dennis and his team did an amazing job on the roof of my fiancee's 2002 Acura RSX after years of living by the beach in San Francisco had mostly rusted...",
"image_url": "http://s3-media3.ak.yelpcdn.com/bphoto/kodoEcmgHRG61pPaWRndbw/ms.jpg",
"categories": [
[
"Body Shops",
"bodyshops"
],
[
"Auto Repair",
"autorepair"
]
],
"display_phone": "+1-951-787-0227",
"rating_img_url_large": "http://s3-media4.ak.yelpcdn.com/assets/2/www/img/9f83790ff7f6/ico/stars/v1/stars_large_4_half.png",
"id": "economy-paint-and-collision-riverside",
"is_closed": false,
"location": {
"city": "Riverside",
"display_address": [
"2548 Rubidoux Blvd",
"Riverside, CA 92509"
],
"geo_accuracy": 8,
"postal_code": "92509",
"country_code": "US",
"address": [
"2548 Rubidoux Blvd"
],
"coordinate": {
"latitude": 34.0132437,
"longitude": -117.3923804
},
"state_code": "CA"
}
}

You are probably having trouble because reviews is an array and you are trying to access it as a JSON object.
$obj = json_decode($data, TRUE);
for($i=0; $i<count($obj['reviews']); $i++) {
echo "Rating is " . $obj['reviews'][$i]["rating"] . " and the excerpt is " . $obj['reviews'][$i]["excerpt"] . "<BR>";
}

I'm not sure what exactly you want but I guess you want print it just for debugging right now. You can try with print_r($obj); and var_dump($obj); - they must print something, especially var_dump().
When you see the data, you can easily edit function a little bit, so you can do for instance print_r($obj->reviews) or print_r($obj['reviews']), depending if $obj is object or array.

You can use var_dump or print_r.
<?php
$decodedJSON = json_decode($jsonData);
// Put everyting to the screen with var_dump;
var_dump($decodedJSON);
// With print_r ( useful for arrays );
print_r($decodedJSON);
// List just review ratings with foreach;
foreach($decodedJSON['reviews'] as $review){
echo $review['rating'];
}
?>

Here using objects example (to read reviews...raiting):
$jsonObject = json_decode($data);
foreach ($jsonObject->reviews as $data) {
echo $data->rating;
}

Related

How set JSON data to match like Strapi API JSON

Does anybody have experience using Strapi.io and combine it with Codeigniter.
I have difficult when i need to make JSON in my controller same like strapi needed.
My JSON look like below
string(102) "{"id":"3","Name":"Paket Anak-anak","Description":"Loren ipsum","Price":"11000","Image":"Capture3.PNG"}"
Whilist what Strapi need to POST request
kind of like below
{
"data": [
{
"id": 2,
"attributes": {
"Name": "Paket Medium",
"Description": "Loren ipsum qqiqqfqqv",
"Price": 120000,
"Image": null,
"createdAt": "2022-09-17T05:44:18.713Z",
"updatedAt": "2022-09-17T05:44:20.723Z",
"publishedAt": "2022-09-17T05:44:20.720Z"
}
}
],
}

How can I retrieve information from Json data in a format where almost everything is stored as an array?

I'm currently using a spider to crawl through reddit and provide me with links and titles in json format. However, when the json file is created the data is stored as individual arrays as shown here:
[{"url": ["http://i.imgur.com/1Pw3ehZ.jpg"], "title": ["Sunset in Trinidad, CA", "bungholesex"]},
{"url": ["http://i.imgur.com/neQiFcf.jpg"], "title": ["Humboldt Bay, Eureka California", "bungholesex"]},
{"url": ["http://imgur.com/dxKHGLV"], "title": ["Crater Lake, Oregon in April", "CausticRain11"]},
{"url": ["http://imgur.com/RPv475F"], "title": ["South Dakota is seriously beautiful.", "ratt1601"]},
{"url": ["http://imgur.com/oH1u7nk"], "title": ["The view outside my back door. Virginia is alright, I guess...", "toowhitetofail"]},
Whenever I go to retrieve and echo the data converted with json_decoder I receive a notice saying "array to string conversion" but there is no data shown.
Try this code:
$data = '[{"url": ["http://i.imgur.com/1Pw3ehZ.jpg"], "title": ["Sunset in Trinidad, CA", "bungholesex"]},
{"url": ["http://i.imgur.com/neQiFcf.jpg"], "title": ["Humboldt Bay, Eureka California", "bungholesex"]},
{"url": ["http://imgur.com/dxKHGLV"], "title": ["Crater Lake, Oregon in April", "CausticRain11"]},
{"url": ["http://imgur.com/RPv475F"], "title": ["South Dakota is seriously beautiful.", "ratt1601"]},
{"url": ["http://imgur.com/oH1u7nk"], "title": ["The view outside my back door. Virginia is alright, I guess...", "toowhitetofail"]}]';
$array = json_decode($data, true);
foreach ($array as &$item) {
$item['url'] = $item['url'][0];
$item['title'] = implode(', ', $item['title']);
}
echo json_encode($array);
I am using first array item of url because it is always single in your example. And it makes no sense to concatenate urls - resut will not be valid url. But if you want, urls can be concatenated same way as title.
Result will look like this:
[
{
"url": "http://i.imgur.com/1Pw3ehZ.jpg",
"title": "Sunset in Trinidad, CA, bungholesex"
},
{
"url": "http://i.imgur.com/neQiFcf.jpg",
"title": "Humboldt Bay, Eureka California, bungholesex"
},
{
"url": "http://imgur.com/dxKHGLV",
"title": "Crater Lake, Oregon in April, CausticRain11"
},
{
"url": "http://imgur.com/RPv475F",
"title": "South Dakota is seriously beautiful., ratt1601"
},
{
"url": "http://imgur.com/oH1u7nk",
"title": "The view outside my back door. Virginia is alright, I guess..., toowhitetofail"
}
]
You can check it here.
Your Json above not valid. u should remove , and add ] at the end of your json.
U can check it using json validaor here.
http://jsonlint.com/
[{
"url": ["http://i.imgur.com/1Pw3ehZ.jpg"],
"title": ["Sunset in Trinidad, CA", "bungholesex"]
}, {
"url": ["http://i.imgur.com/neQiFcf.jpg"],
"title": ["Humboldt Bay, Eureka California", "bungholesex"]
}, {
"url": ["http://imgur.com/dxKHGLV"],
"title": ["Crater Lake, Oregon in April", "CausticRain11"]
}, {
"url": ["http://imgur.com/RPv475F"],
"title": ["South Dakota is seriously beautiful.", "ratt1601"]
}, {
"url": ["http://imgur.com/oH1u7nk"],
"title": ["The view outside my back door. Virginia is alright, I guess...", "toowhitetofail"]
}]

bryntum component integration

I am trying to integrate the bryntum component(schedule) in php. I am not much aware in ext js.
Please see the images here
Here, Name fields are fetching properly, whereas Capacity is not accessing. These values are coming from Zoho CRM.
My code is like Click, whereas r-read.php file is the responsible file for fetching the record from CRM and store it in a json format. It is like
{
"success": true,
"total": 9,
"root": [{
"Id": 1,
"Name": "Sri Test",
"Capicity": "190.0"
}, {
"Id": 2,
"Name": "tester_test01",
"Capicity": "500.0"
}, {
"Id": 3,
"Name": "Tesing room 23",
"Capicity": "5000.0"
}, {
"Id": 4,
"Name": "Test for 6th product",
"Capicity": "5000.0"
}, {
"Id": 5,
"Name": "Banquet hall test-01",
"Capicity": "500.0"
}, {
"Id": 6,
"Name": "test room",
"Capicity": "1000.0"
}, {
"Id": 7,
"Name": "Grande Ballroom",
"Capicity": "4000.0"
}, {
"Id": 8,
"Name": "Cedar Room",
"Capicity": "1400.0"
}, {
"Id": 9,
"Name": "Maple Room",
"Capicity": "1200.0"
}]
}
In the capacity column, it will show like 190.0 , 500.0, 5000.0 etc like Name column.
I'm not familier with the Bryntum schedular component, but most of the time when you have problems like these it's because you didn't define the Capacity field in your model.
I saw you used the following model: Sch.model.Resource. Can it be that is only has the Name field and not Capacity? Your JSON response looks fine to me.
In the sample JSON above, Capacity is spelled Capicity.
See if the same spelling needs can be used everywhere. Maybe then the data will resolve properly.

Which schema is better in web service API design

Recently, our team is going to develop mobile(iphone, android platforms) applications for our existing website, let user can use the application to more easy to read our content via the application.
But our team have different views in JSON schema of the API return, below are the sample response.
Schema type 1:
{
"success": 1,
"response": {
"threads": [
{
"thread_id": 9999,
"title": "Topic haha",
"content": "blah blah blah",
"category": {
"category_id": 100,
"category_name": "Chat Room",
"category_permalink": "http://sample.com/category/100"
},
"user": {
"user_id": 1,
"name": "Hello World",
"email": "helloworld#hello.com",
"user_permalink": "http://sample.com/user/Hello_World"
},
"post_ts": "2012-12-01 18:16:00T0800"
},
{
"thread_id": 9998,
"title": "asdasdsad ",
"content": "dsfdsfdsfds dsfdsf ds",
"category": {
"category_id": 101,
"category_name": "Chat Room 2",
"category_permalink": "http://sample.com/category/101"
},
"user": {
"user_id": 2,
"name": "Hello baby",
"email": "hellobaby#hello.com",
"user_permalink": "http://sample.com/user/2"
},
"post_ts": "2012-12-01 18:15:00T0800"
}
]
}
}
Schema type 2:
{
"success": 1,
"response": {
"threads": [
{
"thread_id": 9999,
"title": "Topic haha",
"content": "blah blah blah",
"category": 100,
"user": 1,
"post_ts": "2012-12-01 18:16:00T0800"
},
{
"thread_id": 9998,
"title": "asdasdsad ",
"content": "dsfdsfdsfds dsfdsf ds",
"category": 101,
"user": 2,
"post_ts": "2012-12-01 18:15:00T0800"
}
],
"category": [
{
"category_id": 100,
"category_name": "Chat Room",
"category_permalink": "http://sample.com/category/100"
},
{
"category_id": 101,
"category_name": "Chat Room 2",
"category_permalink": "http://sample.com/category/101"
}
],
"user": [
{
"user_id": 1,
"name": "Hello World",
"email": "helloworld#hello.com",
"user_permalink": "http://sample.com/user/Hello_World"
},
{
"user_id": 2,
"name": "Hello baby",
"email": "hellobaby#hello.com",
"user_permalink": "http://sample.com/user/Hello_baby"
}
]
}
}
Some Developers claim that if using schema type 2,
can reduce data size if the category & user entities comes too much duplicated. it does really reduce at least 20~40% size of response plain text.
once if the data size come less, in parsing it to JSON object, the memory get less
categoey & user can be store in hash-map, easy to reuse
reduce the overhead on retrieving data
I have no idea on it if schema type 2 does really enhanced. Because I read so many API documentation, never seen this type of schema design. For me, it looks like a relational database. So I have few questions, because I have no experience on designing a web services API.
Does it against API design principle (Easy to read, Easy to use) ?
Does it really get faster and get less memory resource on parsing on IOS / Android platform?
Does it can reduce the overhead between client & server?
Thanks you.
When I do such an application for android, I parse JSON just one and put it in database. Later I'm using ContentProvider to access it. In Your case You could use 2nd schema but without user, category part. Use lazy loading instead but it will be good solution just in case categories and users repeat often.

Parsing JSON with PHP

I'm attempting to pull in data from Google's Shopping API. I'm able to download the data successfully, but I'm having trouble parsing through it with PHP. I'm still learning, but I seem to be having issues with multi-dimensional arrays. I capture the JSON with $json = json_decode($data);.
The following just echos the outer array, but I can't pull from the inner array:
foreach($json as $key => $value) {
echo $key . " : " . $value;
}
If I want to grab the "title", "description", "brand", and "availability" for each product, how would I parse through it?
{
"kind": "shopping#products",
"etag": "\"T9uPnY2MZMB71TDpKXXZdr3yWX4/qtJ5vmpftFWNfijyLD9ti2Xpj-w\"",
"id": "tag:google.com,2010:shopping/products",
"selfLink": "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&q\u003dsony&maxResults\u003d3&startIndex\u003d2",
"nextLink": "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&q\u003dsony&maxResults\u003d3&startIndex\u003d5",
"previousLink": "https://www.googleapis.com/shopping/search/v1/public/products?country\u003dus&q\u003dsony&maxResults\u003d3&startIndex\u003d1",
"totalItems": 633694,
"startIndex": 2,
"itemsPerPage": 3,
"currentItemCount": 3,
"items": [
{
"kind": "shopping#product",
"id": "tag:google.com,2010:shopping/products/1161353/11882813508247586172",
"selfLink": "https://www.googleapis.com/shopping/search/v1/public/products/1161353/gid/11882813508247586172",
"product": {
"googleId": "11882813508247586172",
"author": {
"name": "Buy.com",
"accountId": "1161353"
},
"creationTime": "2011-04-24T05:13:38.000Z",
"modificationTime": "2011-08-05T17:45:24.000Z",
"country": "US",
"language": "en",
"title": "Sony BRAVIA KDL-46EX720 46 inch 3D LED HDTV 1080p 120Hz",
"description": "Entertainment lovers the slim Sony EX720-Series LED HDTV is for you. See precise motion detail plus watch your favorite 2D or 3D entertainment in clear, vivid Full HD 1080p picture quality with incredible contrast. You can even connect to the internet and access a great selection of online entertainment with Netflix , Hulu Plus , Pandora , Qriocity and more - there s always something on. Plus video chat with friends and family when you Skype on the big screen.",
"link": "http://clickfrom.buy.com/default.asp?adid\u003d17902&sURL\u003dhttp%3A%2F%2Fwww.buy.com%2Fprod%2Fsony-bravia-kdl-46ex720-46-3d-led-hdtv-1080p-120hz%2Fq%2Fsellerid%2F10004001%2Floc%2F111%2F219891693.html",
"brand": "Sony",
"condition": "new",
"gtin": "00027242817081",
"gtins": [
"00027242817081"
],
"inventories": [
{
"channel": "online",
"availability": "inStock",
"price": 1348.0,
"currency": "USD"
}
],
"images": [
{
"link": "http://ak.buy.com/PI/0/1000/219891693.jpg"
}
]
}
},
{
"kind": "shopping#product",
"id": "tag:google.com,2010:shopping/products/7827/1976288072671326122",
"selfLink": "https://www.googleapis.com/shopping/search/v1/public/products/7827/gid/1976288072671326122",
"product": {
"googleId": "1976288072671326122",
"author": {
"name": "Dell",
"accountId": "7827"
},
"creationTime": "2011-06-08T15:11:49.000Z",
"modificationTime": "2011-08-05T15:04:13.000Z",
"country": "US",
"language": "en",
"title": "Sony Bravia 55\" KDL55EX500 1080p 120Hz LCD HDTV",
"description": "Enjoy breathtaking viewing experience with Bravia 55-inch KDL55EX500 1080p LCD HDTV from Sony®. This LCD TV features Motionflow™ 120 Hz Technology that allows you to experience smooth motion detail and clarity which delivers a crisp, fluid and realistic viewing skill during fast-action scenes. Additionally, the incorporated LightSensor™ Technology automatically increases or decreases the level of brightness of your TV's backlight based on a room's lighting conditions. Moreover, the BRAVIA Engine™ 2 fully processor lets you enjoy sharp, vibrant, life-like images while optimizing color, contrast and significantly reducing noise. Besides this, get a natural looking picture with an Ambient Sensor. Plus, you can also share your photos and music on the big screen by simply connecting your digital camera, USB-enabled MP3 player, or USB storage device directly to your HDTV's USB input. With all these features loaded into a single television the Bravia EX500 is an ideal choice to complement your digital lifestyle.var wcCpi\u003d\"A3477150\";",
"link": "http://lt.dell.com/lt/lt.aspx?CID\u003d27530&LID\u003d627063&DGC\u003dSS&DGSeg\u003dDHS&DURL\u003dhttp://accessories.us.dell.com/sna/productdetail.aspx?c\u003dus%26l\u003den%26s\u003ddhs%26cs\u003d19%26sku\u003dA3477150%26CAWELAID\u003d469727188",
"brand": "Sony",
"condition": "new",
"gtin": "00027242784932",
"gtins": [
"00027242784932"
],
"inventories": [
{
"channel": "online",
"availability": "inStock",
"price": 1348.0,
"currency": "USD"
}
],
"images": [
{
"link": "http://accessories.us.dell.com/sna/images/products/large/A3477150temp.jpg"
}
]
}
},
{
"kind": "shopping#product",
"id": "tag:google.com,2010:shopping/products/1113342/9429326904502109794",
"selfLink": "https://www.googleapis.com/shopping/search/v1/public/products/1113342/gid/9429326904502109794",
"product": {
"googleId": "9429326904502109794",
"author": {
"name": "Walmart",
"accountId": "1113342"
},
"creationTime": "2011-03-26T23:58:51.000Z",
"modificationTime": "2011-08-04T19:42:49.000Z",
"country": "US",
"language": "en",
"title": "Sony Bravia 32\" Class 3D LED-LCD 1080p 240Hz HDTV,1.68\" ultra-Slim,",
"description": "Note: You must have a source of HD programming in order to take full advantage of the Sony Bravia 32\" Class 3D 1080p LED HDTV. Contact your local cable or satellite TV provider for details on how to upgrade.Visit the Sony Brand Shop for 3D glasses, other 3D HDTVs and more.Sony Bravia 32\" Class 3D 1080p LED HDTV 240Hz, KDL-32EX720:See It All In 3D: Engineered with advanced technologies, the EX720 Series is more than a fully-loaded HDTV with 3D. Once you slide on the active shutter glasses (sold separately), the on-screen image is precisely synchronized and delivered with the Full HD image intact for an immersive entertainment viewing experience with maximum resolution and superb clarity.Slim Design, Stunning Picture: Experience the next level of picture quality and contrast with Edge LED Backlight technology. U",
"link": "http://www.walmart.com/ip/Sony-KDL-32EX720/15780230?sourceid\u003d1500000000000003142050&ci_src\u003d14110944&ci_sku\u003d15780230",
"brand": "Sony",
"condition": "new",
"gtin": "00027242817135",
"gtins": [
"00027242817135"
],
"inventories": [
{
"channel": "online",
"availability": "inStock",
"price": 898.0,
"currency": "USD"
}
],
"images": [
{
"link": "http://i.walmartimages.com/i/p/00/02/72/42/81/0002724281713_500X500.jpg"
}
]
}
}
]
}
If I was you, I would parse the JSON as an array instead of as an object. This can be done by doing the following:
$json = json_decode($data, true);
By included the second argument in json_decode with a value of true, you get back an array. You can then do something like:
echo '<pre>';
print_r($json);
exit;
This will give you an idea of the array structure of the data and how to access the information you want. For example, to pull the title, brand, and description of each item, you'd do the following:
foreach($json['items'] as $item) {
echo 'Title: ' . $item['product']['title'] . '<br />';
echo 'Brand: ' . $item['product']['brand'] . '<br />';
echo 'Description: ' . $item['product']['description'] . '<br />';
}
To get the availability, again do a dump of the array using print_r() and figure out the best way to access it from the array.
Your JSON is a mix of arrays and objects. So array notation will not work for all items.
For example, to find the brand use:
foreach ($json->items as $item) {
var_dump($item->product->brand);
}
Codepad example
JSON specification
We can parse JSON Array like this,
<?php
$json = "[{\"name\":\"user1\",\"id\":\"940\"},{\"name\":\"user2\",\"id\":\"949\"}]";
$dec = json_decode($json);
for($idx = 0; $idx < count($dec); $idx++){
$obj = (Array)$dec[$idx];
echo $obj["name"];
}
?>
and similarly JSON Object like this,
<?php
$json = "{\"name\":\"user1\",\"id\":\"940\"}";
$dec = (Array)json_decode($json);
echo $dec["name"];
?>
You can use this json parser for seeing your content in proper format.
You can use this code:
$json = json_decode($url,true);
//you can retrieve kind, tag, id by using
$kind = $json['kind'];
$id = $json['id'];
Here, items itself will have an array that you can use this
$items[] = $json['items'];
// you can retrieve the data inside the kind array
$kind_arr = $json['items'][0][]['kind'];
//similarly you can parse all the data
This is not a JSON issue. You just need to traverse the arrays. A simple print_r($json); will show you the structure.
In your case you probably need:
foreach ($json["items"] as $item) {
foreach ($item["product"] as $key => $value) {
echo $key . " : " . $value;
}
}
The first foreach loops over the item list. And the second subarray access ["product"] will get you to the desired attributes.
$json = '{ "a1":{ "field1":"name1", "field2":age1, "field3":"country1"
},
"a2":{ "field1":"name2", "field2":age2, "field3":"country2" },
"a3":{ "field1":"name3", "field2":age3, "field3":"country3" } }';
$Array = json_decode($json, true);
foreach ($Array as $key => $value)
{
echo " $key ";
foreach ($value as $k => $val)
{
echo "$k | $val <br />";
}
}

Categories