> 백엔드 개발 > PHP 튜토리얼 > php解析xml到二维数组有关问题,求大神指导

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

WBOY
풀어 주다: 2016-06-13 12:06:10
원래의
1075명이 탐색했습니다.

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

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















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
<br /><?xml version="1.0" encoding="gb2312"?><br /><www><br /><hh name="haha1哈哈" /><br /><hh name="haha2哈哈"><br /><hh name="haha2.1哈哈" /><br /><hh name="haha2.2哈哈" /></hh><br /><hh name="haha3哈哈"><br /><hh name="haha3.1哈哈" /><br /><hh name="haha3.2哈哈" /><br /></hh><br /></www><br />
로그인 후 복사


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


<br>Array<br>(<br>    [1] => Array<br>        (<br>            [name] => haha1哈哈<br>            [id] => 1<br>            [pid] => 0<div class="clear">
                 
              
              
        
            </div>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿