2016-11-13 7 views
0

Мне нужно отобразить массив PHP данных из файла XML (https://pogoda.yandex.ru/static/cities.xml). Я хочу, чтобы в массиве все «id». Помогите мне найти ошибку. БлагодаряXML в PHP не отображает массив

<?php 
$data_file_city="https://pogoda.yandex.ru/static/cities.xml"; 
$xml_city = simplexml_load_file($data_file_city); 

    foreach($xml_city->country as $key=>$value){ 
    foreach ($value->city as $key1=>$value1) { 
     $id = array("$value1[country]"); 
     echo $id; 
    } 
    } 
+1

'массив ("$ value1 [страны]")'? Что это? –

+0

вы определяете '$ id' как 'array', используйте' print_r ($ id) 'для отображения содержимого или удаляете' array() 'часть из' $ id = ' – RST

+0

Мне нужен этот массив для использования в JS. Я получаю только строку –

ответ

0

Каждый $value1 в вашем foreach является SimpleXMLElement объект с атрибутами.

Чтобы получить атрибуты такого объекта используют attributes функцию:

$ids = array(); 
$countries = array(); 
foreach($xml_city->country as $key=>$value){ 
    foreach ($value->city as $key1=>$value1) { 
     $attrs = $value1->attributes(); 

     // Use `strval` function to cast attribute value to `string` type 

     // get `id` attribute 
     $id = strval($attrs['id']); 

     // get `country` attribute 
     $country = strval($attrs['country']); 

     echo $id, '<br />', $country; 

     // add to array 
     $ids[] = $id; 
     $countries[] = $country; 
    } 
} 
+0

Спасибо! Это помогает –

+0

Один момент. Мне нужны эти массивы для использования в цикле JS. И мне нужно каждое значение отдельно. Как я могу это сделать? –

+0

Я не понимаю ваш вопрос. Вы не можете добавить элемент в массив или что? –