Преобразование XML-файла в PHP и использование многомерных массивов

Я работаю над проектом, в котором мне нужно конвертировать XML-файл в формат PHP, чтобы я мог использовать значения в файле. Я использовал следующий код:

$myarray = simplexml_load_file('/*xml file location*/');

XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>locality</type>
<type>political</type>
<formatted_address>Vijayawada, Andhra Pradesh, India</formatted_address>
<address_component>
<long_name>Vijayawada</long_name>
<short_name>Vijayawada</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Krishna</long_name>
<short_name>Krishna</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Andhra Pradesh</long_name>
<short_name>AP</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>India</long_name>
<short_name>IN</short_name>
<type>country</type>
<type>political</type>
</address_component>
<geometry>
<location>
<lat>16.5061743</lat>
<lng>80.6480153</lng>
</location>
<location_type>APPROXIMATE</location_type>
<viewport>
<southwest>
<lat>16.4565307</lat>
<lng>80.5572568</lng>
</southwest>
<northeast>
<lat>16.5639733</lat>
<lng>80.7316657</lng>
</northeast>
</viewport>
<bounds>
<southwest>
<lat>16.4565307</lat>
<lng>80.5572568</lng>
</southwest>
<northeast>
<lat>16.5639733</lat>
<lng>80.7316657</lng>
</northeast>
</bounds>
</geometry>
<place_id>ChIJS5QtSPnvNToRZQJKq4R-m5M</place_id>
</result>
</GeocodeResponse>

Это дало мне вывод массива PHP как:

SimpleXMLElement Object ( [status] => OK
[result] => SimpleXMLElement Object (
[type] => Array (
[0] => locality [1] => political
)
[formatted_address] => Vijayawada, Andhra Pradesh, India
[address_component] => Array (
[0] => SimpleXMLElement Object (
[long_name] => Vijayawada
[short_name] => Vijayawada
[type] => Array (
[0] => locality
[1] => political
)
)
[1] => SimpleXMLElement Object (
[long_name] => Krishna
[short_name] => Krishna
[type] => Array (
[0] => administrative_area_level_2
[1] => political
)
)
[2] => SimpleXMLElement Object (
[long_name] => Andhra Pradesh
[short_name] => AP
[type] => Array (
[0] => administrative_area_level_1
[1] => political
)
)
[3] => SimpleXMLElement Object (
[long_name] => India
[short_name] => IN
[type] => Array (
[0] => country
[1] => political
)
)
)
[geometry] => SimpleXMLElement Object (
[location] => SimpleXMLElement Object (
[lat] => 16.5061743
[lng] => 80.6480153
)
[location_type] => APPROXIMATE
[viewport] => SimpleXMLElement Object (
[southwest] => SimpleXMLElement Object (
[lat] => 16.4565307
[lng] => 80.5572568
)
[northeast] => SimpleXMLElement Object (
[lat] => 16.5639733
[lng] => 80.7316657
)
)
[bounds] => SimpleXMLElement Object (
[southwest] => SimpleXMLElement Object (
[lat] => 16.4565307
[lng] => 80.5572568
)
[northeast] => SimpleXMLElement Object (
[lat] => 16.5639733
[lng] => 80.7316657

)
)
)
[place_id] => ChIJS5QtSPnvNToRZQJKq4R-m5M
)
)

Теперь мой вопрос:
Мне нужны только значения lat, lon местоположения, т. Е.

[geometry] => SimpleXMLElement Object ( [location] => SimpleXMLElement Object ( [lat] => 16.5061743 [lng] => 80.6480153 )

Так,

0

Решение

Поскольку есть некоторые недостающие детали, я думаю, вы хотите получить значения? В этом случае simplexml возвращает не массив, а объект.

$myarray = simplexml_load_file('/*xml file location*/');
$lat = $myarray->result->geometry->location->lat;
$long = $myarray->result->geometry->location->lng
1

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

Других решений пока нет …

По вопросам рекламы [email protected]