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

WBOY
リリース: 2016-06-13 12:06:10
オリジナル
1052 人が閲覧しました

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

この投稿は最終的に、community147 によって 2014-08-28 21:10:54 に編集されました <br><br> <br> <br>









<br><br>array(
array("name"=>"haha1",id=1,pid=0),
array("name"= >" 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 />
ログイン後にコピー
(
[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 />
ログイン後にコピー
[名前] => haha​​1haha<br> [id] => 1<br> [pid] => 0
<br>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート