1

I have a JSON array as follows:

[
{
    "custClass": [
        {
            "code": "50824109d3b1947c9d9390ac5caae0ef",
            "desc": "e1f96b98047adbc39f8baf8f4aa36f41"
        },
        {
            "code": "dab6cc0ed3688f96333d91fd979c5f74",
            "desc": "d0e850f728b2febee79e1e7d1186c126"
        },
        {
            "code": "bc4050f8f891296528ad6a292b615e86",
            "desc": "bee3120e77092d889c3b9e27cbee75bd"
        },
        {
            "code": "f13fc8c35dfe206a641207c6054dd9a0",
            "desc": "32a81cb610805d9255d5f11354177414"
        },
        {
            "code": "2117c346d9b3dfebf18acc8b022326d4",
            "desc": "88a8e85db11976082fed831c4c83838e"
        },
        {
            "code": "95c0674fc0e0434f52a60afce74571d2",
            "desc": "39c4d4bca1578194801f44339998e382"
        },
        {
            "code": "c8ad6f709612d2a91bb9f14c16798338",
            "desc": "6b4c4d5f4ae609742c1b6e62e16f8650"
        }
    ],
    "sourceData": [
        {
            "sourceId": "ff64060a40fc629abf24eb03a863fd55",
            "sourceName": "92aa69979215a2bf6290c9a312c5891f"
        }
    ]
}

]

I want to loop through this nested JSON array to retrieve all the "desc" from the "custClass" list using PHP.

Any help would be appreciated.

grizzthedj
  • 7,131
  • 16
  • 42
  • 62
  • 2
    First decode the JSON you can learn about this at here: http://php.net/manual/en/function.json-decode.php – DsRaj Jun 08 '18 at 07:47

5 Answers5

1

You can try this way

$json='{
  "custClass": [
    {
      "code": "50824109d3b1947c9d9390ac5caae0ef",
      "desc": "e1f96b98047adbc39f8baf8f4aa36f41"
    },
    {
      "code": "dab6cc0ed3688f96333d91fd979c5f74",
      "desc": "d0e850f728b2febee79e1e7d1186c126"
    },
    {
      "code": "bc4050f8f891296528ad6a292b615e86",
      "desc": "bee3120e77092d889c3b9e27cbee75bd"
    },
    {
      "code": "f13fc8c35dfe206a641207c6054dd9a0",
      "desc": "32a81cb610805d9255d5f11354177414"
    },
    {
      "code": "2117c346d9b3dfebf18acc8b022326d4",
      "desc": "88a8e85db11976082fed831c4c83838e"
    },
    {
      "code": "95c0674fc0e0434f52a60afce74571d2",
      "desc": "39c4d4bca1578194801f44339998e382"
    },
    {
      "code": "c8ad6f709612d2a91bb9f14c16798338",
      "desc": "6b4c4d5f4ae609742c1b6e62e16f8650"
    }
  ],
  "sourceData": [
    {
      "sourceId": "ff64060a40fc629abf24eb03a863fd55",
      "sourceName": "92aa69979215a2bf6290c9a312c5891f"
    }
  ]
}';

        $decode=json_decode($json,true);
        $desc=[];

        foreach($decode['custClass'] as $cust){
              $desc[]=$cust['desc'];
        }        
        var_dump($desc);
Mayank Majithia
  • 1,916
  • 16
  • 21
0

You can decode data and loop it

     $s = '[
{
    "custClass": [
        {
            "code": "50824109d3b1947c9d9390ac5caae0ef",
            "desc": "e1f96b98047adbc39f8baf8f4aa36f41"
        },
        {
            "code": "dab6cc0ed3688f96333d91fd979c5f74",
            "desc": "d0e850f728b2febee79e1e7d1186c126"
        },
        {
            "code": "bc4050f8f891296528ad6a292b615e86",
            "desc": "bee3120e77092d889c3b9e27cbee75bd"
        },
        {
            "code": "f13fc8c35dfe206a641207c6054dd9a0",
            "desc": "32a81cb610805d9255d5f11354177414"
        },
        {
            "code": "2117c346d9b3dfebf18acc8b022326d4",
            "desc": "88a8e85db11976082fed831c4c83838e"
        },
        {
            "code": "95c0674fc0e0434f52a60afce74571d2",
            "desc": "39c4d4bca1578194801f44339998e382"
        },
        {
            "code": "c8ad6f709612d2a91bb9f14c16798338",
            "desc": "6b4c4d5f4ae609742c1b6e62e16f8650"
        }
    ],
    "sourceData": [
        {
            "sourceId": "ff64060a40fc629abf24eb03a863fd55",
            "sourceName": "92aa69979215a2bf6290c9a312c5891f"
        }
    ]
}
]';
$data =json_decode($s,true);
foreach($data as  $obj){
    foreach($obj['custClass'] as $val){ 
        echo "Desc ".$val['desc']."<br/>";
    }
}
Bhumi Shah
  • 9,323
  • 7
  • 63
  • 104
0

Try decoding data and retrieve it using foreach:

$your_data = your_data;

$decoded_data = json_decode($your_data [0], true);
$final_data = [];
foreach($decoded_data['custClass'] as $data) {
$final_data[] = $data['desc'];
}

print_r($final_data);
0

try this code

loop this array like below

foreach(json_decode($data) as $key=>$value){
        foreach($value->custClass as $key1=>$value1){
            echo $value1->desc;
        }
    }

json_decode() the data

<?php
$data= '[
{
"custClass": [
{
"code": "50824109d3b1947c9d9390ac5caae0ef",
"desc": "e1f96b98047adbc39f8baf8f4aa36f41"
},
{
"code": "dab6cc0ed3688f96333d91fd979c5f74",
"desc": "d0e850f728b2febee79e1e7d1186c126"
},
{
"code": "bc4050f8f891296528ad6a292b615e86",
"desc": "bee3120e77092d889c3b9e27cbee75bd"
},
{
"code": "f13fc8c35dfe206a641207c6054dd9a0",
"desc": "32a81cb610805d9255d5f11354177414"
},
{
"code": "2117c346d9b3dfebf18acc8b022326d4",
"desc": "88a8e85db11976082fed831c4c83838e"
},
{
"code": "95c0674fc0e0434f52a60afce74571d2",
"desc": "39c4d4bca1578194801f44339998e382"
},
{
"code": "c8ad6f709612d2a91bb9f14c16798338",
"desc": "6b4c4d5f4ae609742c1b6e62e16f8650"
}
],
"sourceData": [
{
"sourceId": "ff64060a40fc629abf24eb03a863fd55",
"sourceName": "92aa69979215a2bf6290c9a312c5891f"
}
]
}
]';
foreach(json_decode($data) as $key=>$value){
    foreach($value->custClass as $key1=>$value1){
        echo $value1->desc;
    }
}
?>
Bhargav Chudasama
  • 6,928
  • 5
  • 21
  • 39
0

You can loop through all JSON Arrays by using a recursive algorithm.

$myJsonArray = '<as-your-above-json-array>';

# Convert $myJsonArray into an associative array
$myJsonArray = json_decode($myJsonArray, true);

recursiveArray($myJsonArray);

# A recursive function to traverse the $myJsonArray array
function recursiveArray(array $myJsonArray)
{
    foreach ($myJsonArray as $key => $hitElement) {
        # If there is a element left
        if (is_array($hitElement)) {
            # call recursive structure to parse the jsonArray
            recursiveArray($hitElement);
        } else {
            if ($key === 'desc') {
                echo $hitElement . PHP_EOL;
            }
        }
    }
}

/**
OUTPUT
e1f96b98047adbc39f8baf8f4aa36f41
d0e850f728b2febee79e1e7d1186c126
bee3120e77092d889c3b9e27cbee75bd
32a81cb610805d9255d5f11354177414
88a8e85db11976082fed831c4c83838e
39c4d4bca1578194801f44339998e382
6b4c4d5f4ae609742c1b6e62e16f8650
*/

Live code -> https://wtools.io/php-sandbox/bFEJ

OR use the RecursiveArrayIterator to traverse the $myJsonArray array

$myJsonArray = json_decode($myJsonArray, true);

$myIterator = new RecursiveArrayIterator($myJsonArray);
recursiveArray($myIterator);

function recursiveArray(RecursiveArrayIterator $myIterator)
{
    while ($myIterator->valid()) {
        if ($myIterator->hasChildren()) {
            recursiveArray($myIterator->getChildren());
        } else {
            if ($myIterator->key() === 'desc') {
                echo $myIterator->current() . PHP_EOL;
            }
        }
        $myIterator->next();
    }
}

Live code -> https://wtools.io/php-sandbox/bFEL

hoangthienan
  • 826
  • 1
  • 9
  • 14