最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

php解析xml到二维数组有关问题,求大神指导

来源:http://erdangjiade.com/topic/79706.html 你好,世界。 2017-10-04 21:03浏览(0)

php解析xml到二维数组问题,求大神指导

本帖最后由 community147 于 2014-08-28 21:10:54 编辑

<?xml version="1.0" encoding="gb2312"?>
<www>
<hh name="haha1" />
<hh name="haha2">
<hh name="haha2.1" />
<hh name="haha2.2" />

</hh>
<hh name="haha3">
<hh name="haha3.1" />
<hh name="haha3.2" />

</hh>

</www>

<?php
array(
array("name"=>"haha1",id=1,pid=0),
array("name"=>"haha2",id=2,pid=0),
array("name"=>"haha2,1",id=3,pid=2),
array("name"=>"haha2,2",id=4,pid=2),
array("name"=>"haha3",id=5,pid=0),
array("name"=>"haha3,1",id=6,pid=5),
array("name"=>"haha3.2",id=7,pid=5),
)
?>


把最上面的xml代码转换成下面php数组


下面是我写的代码,转换时候pid不对劲,我怎么调试都不行,还请指导
$xml = simplexml_load_file("hh.xml");
$arr = json_decode(json_encode($xml),TRUE);
print_r(arrto2($arr['hh']));
function arrto2($arr,$pid=0){
static $i=1;
static $data=array();
foreach($arr as $v){
if(is_array($v)){
foreach($v as $z => $x){
if($z==="@attributes"){
$v["@attributes"]['id']=$i;
$v["@attributes"]['pid']=$pid;
$data[$i]=$v["@attributes"];

}else{
arrto2($x,$i);
}

$i++;
}
}
}
return $data;
}

现在问题解决了,不错还有一个问题,解析中文时候会乱码,编码是gb2312,用utf8正常

------解决方案--------------------
加上meta charset就不会乱码了。

hh.xml

<?xml version="1.0" encoding="gb2312"?>
<www>
<hh name="haha1哈哈" />
<hh name="haha2哈哈">
<hh name="haha2.1哈哈" />
<hh name="haha2.2哈哈" /></hh>
<hh name="haha3哈哈">
<hh name="haha3.1哈哈" />
<hh name="haha3.2哈哈" />
</hh>
</www>



<?php
$xml = simplexml_load_file("hh.xml");
$arr = json_decode(json_encode($xml),TRUE);
echo '<meta http-equiv="content-type" content="text/html;charset=utf-8">';
print_r(arrto2($arr['hh']));
function arrto2($arr,$pid=0){
static $i=1;
static $data=array();
foreach($arr as $v){
if(is_array($v)){
foreach($v as $z => $x){
if($z==="@attributes"){
$v["@attributes"]['id']=$i;
$v["@attributes"]['pid']=$pid;
$data[$i]=$v["@attributes"];

}else{
arrto2($x,$i);
}

$i++;
}
}
}
return $data;
}
?>



Array
(
[1] => Array
(
[name] => haha1哈哈
[id] => 1
[pid] => 0

评论0
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

1 2