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