我们用simpleXML来解析XML时发现,用simplexml_load_file()方法加载xml文档,打印其值其实得到的是一个大的simplexmlelement对象,对象中有个数组,数组中又包含多个单元,每个单元又是一个simplexmlelement对象,
这时,只要把加载过来的xml文档经过toArray函数一转换就变成了一个多维数组了,
问题就在这!当访问时,一会用->,一会用[],很不方便,
这时,如果我们能把对象转成数组,这个问题就迎刃而解了,
这里需要用到的时强制转换和递归!
写一个函数,递归把simpleXML对象转成数组,先把最外层对象转成数组,再循环数组,某个单元只要还是对象,就继续调用自身来转换,具体代码如下:
function toArray($sim) {
$arr = (array) $sim;
foreach($arr as $k=>$v) {
if($v instanceof simplexmlelement || is_array($v)) {
$arr[$k] = toArray($v);
}
}
return $arr;
}
这时,只要把加载过来的xml文档经过toArray函数一转换就变成了一个多维数组了,
以后需要哪些节点信息,只要用数组的方式索引就行了,方便!
$simxml = simplexml_load_file('./book.xml');
$xmlarr = toArray($simxml);
echo $xmlarr['book']['1']['title'];
好,这就是xml转数组,
下一篇:数组转xml 【传送门】