我使用simplexml_load_file
php函数读取了xml文件。
我将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>";
答案 0 :(得分:6)
这将为您提供一个简单的关联数组:
$array = json_decode(json_encode($xml), true);
答案 1 :(得分: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>";
}