PHP による XML の 2 次元配列への解析に関する問題。ガイダンスを求めてください。<br>
この投稿は最終的に、community147 によって 2014-08-28 21:10:54 に編集されました <br>
<br> <br> <br>
www><br><br>array(
array("name"=>"haha1",id=1,pid=0),
array("name"= >" haha2",id=2,pid=0),<br>array("name"=>"haha2,1",id=3,pid=2),<br>array("name"= >" haha2,2",id=4,pid=2),<br>array("name"=>"haha3",id=5,pid=0),<br>array("name"= >" haha3,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 />
ログイン後にコピー
(
[1] =>配列
(<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 />
ログイン後にコピー
[名前] => haha1haha<br> [id] => 1<br> [pid] => 0