Доступ к данным во вложенном массиве с помощью PHP

#php #arrays #xml

#php #массивы #xml

Вопрос:

Из веб-службы я читаю XML-файл со следующей структурой

 <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>
  

Затем я использую следующий php-код для анализа данных

 $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>";
}
  

Я бы ожидал, что приведенный выше код отобразит

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

Вместо этого мой вывод

 0 => Array
1 => Array
  

Я настоящий новичок в php и не могу в этом разобраться…
Любая помощь, пожалуйста?

Комментарии:

1. Есть ли какая-либо причина, по которой вы не просто обрабатываете XML напрямую, поскольку это так же просто (и меньше шагов).

2. Вам нужно выполнить цикл по $value переменной.

Ответ №1:

$productsArray['StoreDetails'] представляет собой 2-мерный массив.

$value представляет собой ассоциативный массив с ItemID ItemPrice1 элементами и . Вам нужно их распечатать.

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