#php #xml #simplexml
#php #xml #simplexml
Вопрос:
Я пытаюсь выполнить цикл по массиву, созданному simplexml_load_file, при доступе к массиву вне моего для каждого цикла я получаю ожидаемые результаты,
print_r ($feedobject->Item[0]->attributes())`;
Вывод:
SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => 202fnl
[TableID] => newitem
)
)
При доступе через my для каждого цикла
foreach ($feedobject->Item[$x] as $value) {
print_r ($value->attributes());
$x ;
}
Я получаю неожиданные результаты (на один шаг дальше в массив)
SimpleXMLElement Object
(
[@attributes] => Array
(
[TableFieldID] => description
[Value] => Our 2-ounce plastic funnel is the perfect fit for our 8-ounce stainless steel flasks. It works!
)
)
Xml-файл выглядит следующим образом
<Item ID="202fnl" TableID="newitem">
<ItemField TableFieldID="description" Value="Our 2-ounce plastic funnel is the perfect fit for our 8-ounce stainless steel flasks. It works!"/>
Почему это происходит и есть ли у кого-нибудь лучшее предложение для перебора определенных элементов этого массива?
Ответ №1:
Вы путаетесь в выборе элемента. Чтобы получить каждый <Item>
, просто используйте $feedobject->Item
.
// select each `<Item>`
foreach ($feedobject->Item as $value) {
echo $value->attributes()->ID;
}
Когда вы используете $feedobject->Item[$x] as $value
, это уже указывает непосредственно на элементы внутри <Item>
, которые показывают вам <ItemField>
.
Комментарии:
1. После этого получил правильный вывод, большое вам спасибо.
2. @GreggoryWiley уверен, что рад, что это помогло