Search code examples
phpxmlarr

XML in to a PHP does not display an array


I need to display an array PHP of data from file XML (https://pogoda.yandex.ru/static/cities.xml). I want in array all "id". Help me find the error. Thanks

<?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;
    }
  }

Solution

  • Every $value1 in your foreach is a SimpleXMLElement Object with attributes.

    To get attributes of such object use attributes function:

    $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;
        }
    }