2012-12-25 27 views
3

我已经使用simplexml_load_file php函数读取了xml文件。如何从php数组中删除SimpleXMLElement对象

我有存储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);