ホームページ >バックエンド開発 >PHPチュートリアル >XML を 2 次元配列に解析する PHP に関連する問題。ガイダンスを求めてください。

XML を 2 次元配列に解析する PHP に関連する問題。ガイダンスを求めてください。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:06:101114ブラウズ

PHP による XML の 2 次元配列への解析に関する問題。ガイダンスを求めてください。<br>

この投稿は最終的に、community147 によって 2014-08-28 21:10:54 に編集されました 2fa6a6c991dc0964f3c83be6aa447205<br>87e3aacabc9243493c4bd2901253d114<br> d8896fa4e7dc3ee9b7424f05dd215ba3<br> 8d0433e7bfbe3199b666427acec74f33<br> 2a2fdc1d0aeec4135e41c1bc0126e4b5<br><br>1ede9bd836f3653dbf70e33cc3b076eb" haha​​2",id=2,pid=0),<br>array("name"=>"haha2,1",id=3,pid=2),<br>array("name"= >" haha​​2,2",id=4,pid=2),<br>array("name"=>"haha3",id=5,pid=0),<br>array("name"= >" haha​​3,1",id=6,pid=5),<br>array("name"=>"haha3.2",id=7,pid=5),<br>)<br> ?> <br><br><br>先頭の XML コードを次の php 配列に変換します。<br><br><br>以下は私が書いたコードです。変換時に pid が間違っています。どうやってもデバッグできません。<br>$xml = simplexml_load_file("hh.xml");<br>$arr = json_decode(json_encode($xml),TRUE);<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> "] ['id'] = $ i;<br><br><br>} else { <br> arrto2($x,$i);<br> }<br> $data;<br>}<br><br>これで問題は解決しました。中国語を解析するときに、別の問題があります。コードは文字化けします。エンコーディングは gb2312 で、utf8<br><br><br> では正常に動作します。---- --解決策------ --<br><br>meta charsetを追加すると文字化けしなくなります。 <br><br>hh.xml<br><br><br><br><br><br><br>配列
<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> [1] =>配列<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 />
[名前] => haha​​1haha<br> [id] => 1<br> [pid] => 0
<br>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。