Задать вопрос
@barder

Почему не формируется массив из цикла по XML?

Привет всем.
Делаю разбор XML и не пойму почему не создается массив при обходе
foreach ($xml->shop->categories->category as $key => $value) {
        echo($value['id'] . " " . $value . "<BR>");
        $cat[$value['id']] = $value;
        
}


Получаю:
7 Продукты
12 Кофеварки
11 Капельные кофеварки
2 Автоматические кофемашины
3 Рожковые кофеварки
5 Кофемолки
10 Капсульные кофемашины
4 Nescafe Dolce Gusto
9 Nespresso
6 Аксессуары
8 Аксессуары для кофемашин

Array
(
)

var_dump($value); показывает:
object(SimpleXMLElement)#271 (2) { ["@attributes"]=> array(1) { ["id"]=> string(1) "7" } [0]=> string(16) "Продукты" }


Не записывает в $cat[] данные

Сам XML
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE yml_catalog SYSTEM "shops.dtd">
            <yml_catalog date="27 Jul 2022 18:25:14">
        <shop><name>Официальный интернет-магазин KRUPS</name>
<company>ООО "Фирменные решения"</company>
<currencies>
  <currency id="RUB" rate="1"/>
</currencies>
<categories>
  <category id="7">Продукты</category>
  <category id="12" parentId="7">Кофеварки</category>
  <category id="11" parentId="12">Капельные кофеварки</category>
  <category id="2" parentId="7">Автоматические кофемашины</category>
  <category id="3" parentId="7">Рожковые кофеварки</category>
  <category id="5" parentId="7">Кофемолки</category>
  <category id="10" parentId="7">Капсульные кофемашины</category>
  <category id="4" parentId="10">Nescafe Dolce Gusto</category>
  <category id="9" parentId="10">Nespresso</category>
  <category id="6">Аксессуары</category>
  <category id="8" parentId="6">Аксессуары для кофемашин</category></categories>
......
......
......
</shop></yml_catalog>
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
Привет от выскочки
62e24fde60a14322797359.png

<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="27 Jul 2022 18:25:14">
    <shop>
        <name>Официальный интернет-магазин KRUPS</name>
        <company>ООО "Фирменные решения"</company>
        <currencies>
            <currency id="RUB" rate="1"/>
        </currencies>
        <categories>
            <category id="7">Продукты</category>
            <category id="12" parentId="7">Кофеварки</category>
            <category id="11" parentId="12">Капельные кофеварки</category>
            <category id="2" parentId="7">Автоматические кофемашины</category>
            <category id="3" parentId="7">Рожковые кофеварки</category>
            <category id="5" parentId="7">Кофемолки</category>
            <category id="10" parentId="7">Капсульные кофемашины</category>
            <category id="4" parentId="10">Nescafe Dolce Gusto</category>
            <category id="9" parentId="10">Nespresso</category>
            <category id="6">Аксессуары</category>
            <category id="8" parentId="6">Аксессуары для кофемашин</category>
        </categories>
    </shop>
</yml_catalog>
XML;
$xml = new SimpleXMLElement($xmlstr);
$cat = [];
foreach ($xml->shop->categories->children() AS $category) {
    $id = (int) $category->attributes()->id;
    $value = (string) $category;
    $cat[$id] = $value;
}
var_dump($cat);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Хммм, $value['id'] и $value одновременно?
Что-то тут не складывается.
Может нужно указать ключ типа $value['title'], или как-нибудь ещё?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы