Php simplexmlelement to array

Php simplexmlelement to array

Я пытаюсь извлечь элементы из массива simpleXML и по какой-то причине не могу их вызвать.

Поэтому я делаю следующий вызов, чтобы получить массив.

Но я не могу вытащить объект из массива. Я не уверен, если массив
правильно отправляется обратно мне из-за того факта, что если я не декодирую строку, я не получаю обратно массив. Странная вещь в том, что в массиве я продолжаю видеть «SimpleXMLElement Object», и я не уверен, что это правильно.

Любая помощь будет оценена.

Решение

Как говорится в выводе дампа, SimpleXML — это тип объекта, а не способ создания массивов.

Эти две строки — разные способы написания одной и той же вещи, вам нужен только один из них; в любом случае вы в конечном итоге SimpleXMLElement объект:

Внешний массив, который вы видите, должен содержать результаты запроса XPath, поскольку они могут поступать из любого места в дереве XML. Это массив SimpleXMLElement объекты.

Как получить доступ к данным с помощью SimpleXML, см. базовая страница использования в руководстве по PHP .

В твоем случае, Score является элементом документа, поэтому необходимо получить доступ с помощью $node->property синтаксис.

Вот приведенная в порядок версия вашего кода:

Другие решения

IMSoP: спасибо за помощь, но мне пришлось немного ее изменить:

И от этого я получил правильный результат, большое спасибо!

Variable $d comes from file_get_contents function to a URL.

Below is output of the print_r($answer) :

How can I retrieve value of each element and add to an array? I can’t figure it out.

5 Answers 5

The $answer can already work as an array. You can do this if you want put it in a real array,

Читайте также:  Что такое момо статуя

In this simple case type casting will also work:

This should work:

I have a problem with this function because typecasting every XML child to an array can be problematic when the text is between CDATA tags.

I fixed this by checking if the result of the typecasting to an array is empty. If so typecast it to a string and you will get a proper result.

Here is my modified version with CDATA support:

У меня есть что-то вроде этого:

Предполагается загрузить XML из geonames. Если я делаю print_r($xml) я получаю:

Я делаю так, как вы можете видеть $xml->code[0]->lat и он возвращает объект. Как я могу получить стоимость?

Кроме того, (int) для целочисленного числа:

если вы не знаете значение XML-элемента, вы можете использовать

Он работает, когда вам нужно определить, является ли значение числом, потому что (string) всегда возвращает строку, а is_int($value) возвращает false

Для меня проще использовать массивы, чем объекты,

Итак, я конвертирую Xml-Object,

Это функция, которая всегда помогла мне преобразовать значения, связанные с xml, в массив

он возвращает элемент под текущим указателем массива, который равен 0, поэтому вы получите значение

вы можете преобразовать массив с помощью этой функции

вы можете использовать ‘<>’ для доступа к вашему имуществу, а затем можете делать все, что пожелаете. Сохраните его или покажите содержимое.

Ссылка на основную публикацию
Adblock detector