Skip to content
Advertisement

Access data in nested array with PHP

From a web service I am reading an xml file with the following structure

<ArrayOfStoreDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
    <StoreDetails>
        <ItemId>138253</ItemId>
        <ItemPrice1>9.68</ItemPrice1>
    </StoreDetails>
    <StoreDetails>
        <ItemId>159733</ItemId>
        <ItemPrice1>35.87</ItemPrice1>
    </StoreDetails>
</ArrayOfStoreDetails>

I then use the following php code to parse through the data

$response = curl_exec($curl);

$products = new SimpleXMLElement($response);

// convert to assoc array
$objJsonDocument = json_encode($products);
$productsarray = json_decode($objJsonDocument, TRUE);

foreach ($productsarray['StoreDetails'] as $key => $value) {
  echo $key . " => " . $value . "<br>";
}

I would expect the code above to display

ItemId => 138253
ItemPrice => 9.68
ItemId => 159733
ItemPrice => 35.87

Instead my output is

0 => Array
1 => Array

I am real beginner in php and cant really figure this out… Any help please?

Advertisement

Answer

$productsArray['StoreDetails'] is a 2-dimensional array.

$value is an associative array with ItemID and ItemPrice1 elements. You need to print those.

foreach ($productsarray['StoreDetails'] as $value) {
  echo $value['ItemID'] . " => " . $value['ItemPrice1'] . "<br>";
}
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement