2012-12-25 6 views
3

Я прочитал xml-файл, используя simplexml_load_file PHP-функцию.Как удалить объект SimpleXMLElement из php-массива

У меня есть данные хранить XML в массив PHP, но в некотором массиве его дисплей массив XML like SimpleXMLElement Object ([0] => some value)

Когда я данные печати XML, его дисплей правильно, но когда я присвоить значение XML в PHP массив его отображения, как описано выше объект XML в массив

XML

<data> 
    <request> 
     <type>City</type> 
     <query>Anand, India</query> 
    </request> 
    <current_condition> 
     <observation_time>08:55 AM</observation_time> 
     <temp_C>28</temp_C> 
     <temp_F>82</temp_F> 
     <weatherCode>113</weatherCode>    
     <weatherDesc>Sunny</weatherDesc> 
     <windspeedMiles>9</windspeedMiles> 
     <windspeedKmph>14</windspeedKmph> 
     <winddirDegree>63</winddirDegree> 
     <winddir16Point>ENE</winddir16Point> 
     <precipMM>0.0</precipMM> 
     <humidity>23</humidity> 
     <visibility>10</visibility> 
     <pressure>1014</pressure> 
     <cloudcover>0</cloudcover> 
    </current_condition> 
     <weather> 
      <date>2012-12-22</date> 
      <tempMaxC>33</tempMaxC> 
      <tempMaxF>91</tempMaxF> 
      <tempMinC>18</tempMinC> 
      <tempMinF>64</tempMinF> 
      <windspeedMiles>11</windspeedMiles> 
      <windspeedKmph>17</windspeedKmph> 
      <winddirection>ENE</winddirection> 
      <winddir16Point>ENE</winddir16Point> 
      <winddirDegree>63</winddirDegree> 
      <weatherCode>113</weatherCode> 
      <weatherDesc>Sunny</weatherDesc> 
      <precipMM>0.0</precipMM> 
     </weather> 
     <weather> 
      <date>2012-12-23</date> 
      <tempMaxC>34</tempMaxC> 
      <tempMaxF>92</tempMaxF> 
      <tempMinC>18</tempMinC> 
      <tempMinF>65</tempMinF> 
      <windspeedMiles>9</windspeedMiles> 
      <windspeedKmph>15</windspeedKmph> 
      <winddirection>ENE</winddirection> 
      <winddir16Point>ENE</winddir16Point> 
      <winddirDegree>64</winddirDegree> 
      <weatherCode>113</weatherCode> 
      <weatherDesc>Sunny</weatherDesc> 
      <precipMM>0.0</precipMM> 
     </weather> 
     <weather> 
      <date>2012-12-24</date> 
      <tempMaxC>33</tempMaxC> 
      <tempMaxF>92</tempMaxF> 
      <tempMinC>18</tempMinC> 
      <tempMinF>64</tempMinF> 
      <windspeedMiles>9</windspeedMiles> 
      <windspeedKmph>14</windspeedKmph> 
      <winddirection>NE</winddirection> 
      <winddir16Point>NE</winddir16Point> 
      <winddirDegree>45</winddirDegree> 
      <weatherCode>113</weatherCode> 
      <weatherDesc>Sunny</weatherDesc> 
      <precipMM>0.0</precipMM> 
     </weather> 
    </data> 

PHP:

$child=$xml->children(); 
foreach($xml->children() as $child) 
{    
    foreach($child->children() as $child_t) 
    { 
     $weather_arr[$child_t->getName()]=$child_t; 
     echo $child_t->getName() . ": " . $child_t . "<br />"; 

    } 
} 

echo "<pre>".html_entity_decode(print_r($weather_arr,true))."</pre>"; 

ответ

2

Я решить мою проблему, используя ниже код.

function simplexml_to_array($xmlobj) { 
    $a = array(); 
    foreach ($xmlobj->children() as $node) { 
     if (is_array($node)) 
      $a[$node->getName()] = simplexml_to_array($node); 
     else 
      $a[$node->getName()] = (string) $node; 
    } 
    return $a; 
} 


foreach($xml->children() as $child) 
{ 
    $arr=simplexml_to_array($child); 
    echo "<pre>".html_entity_decode(print_r($arr,true))."</pre>"; 
} 
6

это даст вам простой ассоциативный массив:

$array = json_decode(json_encode($xml), true); 
Смежные вопросы