Я пытаюсь преобразовать строку XML в многомерный массив PHP. Трудности состоит в том, что XML поставляется с атрибутами и имеет вложенные значения. Мой код работает в данных родительского уровня, но я не уверен, как рекурсурсивно иметь дело с уровнями.
Item Value 1
Sub Value 1
Sub Value 2
Value 3
something value
< /code>
Это моя текущая функция для достижения этого: < /p>
$xmlString = 'Item Value 1Sub Value 1Sub Value 2Value 3something value';
function xmlToArray($xmlObject) {
$array = [];
foreach ($xmlObject as $item) {
// Convert attributes to an array
$attributes = (array)$item->attributes();
// Add the text value to the attributes array if it exists
$attributes['@value'] = trim((string)$item);
$key = (string)$item->getName();
if (isset($make_sub_array) && in_array($key, $make_sub_array)) {
$array[$key][] = $attributes;
}
elseif (isset($array[$key])) {
$make_sub_array[] = $key;
$tmp = $array[$key];
unset($array[$key]);
$array[$key][] = $tmp; //existing data
$array[$key][] = $attributes; //this data
}
else $array[$key] = $attributes;
}
return $array;
}
// Load the XML string into a SimpleXMLElement object
$xmlObject = simplexml_load_string($xmlString);
$array = xmlToArray($xmlObject);
exit(''.print_r($array,1).'');
< /code>
Полученная структура массива ниже, и мне нужна ваша помощь о том, как я могу обработать массив под вторым элементом. Я бы хотел, чтобы его обрабатывали так же, как и родительский: если имя элемента повторяется, оно будет включено как [], поэтому я получаю номер в качестве его родителя, в противном случае [itemname].
Спасибо < /p>
Array
(
[item] => Array
(
[0] => Array
(
[@attributes] => Array
(
[id] => 1
[name] => ItemOne
)
[@value] => Item Value 1
)
[1] => Array
(
[@attributes] => Array
(
[id] => 2
[name] => ItemTwo
)
[@value] =>
)
[2] => Array
(
[@attributes] => Array
(
[id] => 3
[name] => ItemThree
)
[@value] => Value 3
)
)
[something] => Array
(
[@value] => something value
)
)
Подробнее здесь: https://stackoverflow.com/questions/797 ... ray-in-php
XML с атрибутами в массиве в PHP ⇐ Php
Кемеровские программисты php общаются здесь
1756477436
Anonymous
Я пытаюсь преобразовать строку XML в многомерный массив PHP. Трудности состоит в том, что XML поставляется с атрибутами и имеет вложенные значения. Мой код работает в данных родительского уровня, но я не уверен, как рекурсурсивно иметь дело с уровнями.
Item Value 1
Sub Value 1
Sub Value 2
Value 3
something value
< /code>
Это моя текущая функция для достижения этого: < /p>
$xmlString = 'Item Value 1Sub Value 1Sub Value 2Value 3something value';
function xmlToArray($xmlObject) {
$array = [];
foreach ($xmlObject as $item) {
// Convert attributes to an array
$attributes = (array)$item->attributes();
// Add the text value to the attributes array if it exists
$attributes['@value'] = trim((string)$item);
$key = (string)$item->getName();
if (isset($make_sub_array) && in_array($key, $make_sub_array)) {
$array[$key][] = $attributes;
}
elseif (isset($array[$key])) {
$make_sub_array[] = $key;
$tmp = $array[$key];
unset($array[$key]);
$array[$key][] = $tmp; //existing data
$array[$key][] = $attributes; //this data
}
else $array[$key] = $attributes;
}
return $array;
}
// Load the XML string into a SimpleXMLElement object
$xmlObject = simplexml_load_string($xmlString);
$array = xmlToArray($xmlObject);
exit(''.print_r($array,1).'');
< /code>
Полученная структура массива ниже, и мне нужна ваша помощь о том, как я могу обработать массив под вторым элементом. Я бы хотел, чтобы его обрабатывали так же, как и родительский: если имя элемента повторяется, оно будет включено как [], поэтому я получаю номер в качестве его родителя, в противном случае [itemname].
Спасибо < /p>
Array
(
[item] => Array
(
[0] => Array
(
[@attributes] => Array
(
[id] => 1
[name] => ItemOne
)
[@value] => Item Value 1
)
[1] => Array
(
[@attributes] => Array
(
[id] => 2
[name] => ItemTwo
)
[@value] =>
)
[2] => Array
(
[@attributes] => Array
(
[id] => 3
[name] => ItemThree
)
[@value] => Value 3
)
)
[something] => Array
(
[@value] => something value
)
)
Подробнее здесь: [url]https://stackoverflow.com/questions/79749537/xml-with-attributes-to-array-in-php[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия