- ベストアンサー
添え字が表示できない
simplexml_load_fileでXMLデータを解析して、ある添え字を表示したいのですが上手く表示されません。 (PHPバージョンは5です) 解析結果 ++++++++++++++++++++ SimpleXMLElement Object ( [A] => SimpleXMLElement Object ( [B] => Array ( [0] => SimpleXMLElement Object ( [aa] => あいうえお [bb] => かきくけこ [cc] => さしすせそ ) [1] => SimpleXMLElement Object ( [dd] => たちつてと [ee] => なにぬねの [ff] => はひふへほ ) [2] => SimpleXMLElement Object ( [gg] => まみむめも [hh] => やゆよ [ii] => らりるれろ ) <以下省略> ++++++++++++++++++++++++++++++++++++++++ この、0,1,2,・・・を表示させたくて foreach($xml->A->B as $key => $val){ echo "[$key},"; } としても、「0,1,2,」ではなく 「B,B,B,」と表示されてしまいます。 「0,1,2,」と表示させるにはどう記述すればよいのでしょうか??
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
別に変数を用意するしかないかも C/C++が関心カテゴリに入っているのでイテレータに関する知識があるものとする(ってか俺は最近になって漸く読んでいる) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/ で,SimpleXMLIteratorが何を返すかというとcurrent 【Element】で http://www.php.net/~helly/php/ext/spl/classSimpleXMLIterator.html#5f004fc95d995ef6512d2e557c4bac45 やってみるとわかるが, <?php $xml = simplexml_load_file("Q3725013-1.xml"); foreach ($xml->A->B as $B){ print_r($B); } ?> の出力結果は SimpleXMLElement Object ( [0] => あ ) SimpleXMLElement Object ( [0] => い ) SimpleXMLElement Object ( [0] => う ) となってしまう。$Bからいくら取り出そうとしたって, keyは0としか返ってこない
その他の回答 (2)
- SAYKA
- ベストアンサー率34% (944/2776)
>xmlの場合は何でこうなるのか http://www.php.net/manual/ja/ref.simplexml.php DOMでもそうだけど単純な連想配列じゃないのがXMLのツリーだから、nodeNameか何かで持ってこないと表示できないんじゃないかな。 そんな気がするよ。
お礼
普通の連想配列とは違うんですね。。 わざわざありがとうございました♪
- SAYKA
- ベストアンサー率34% (944/2776)
>$xml->A->B ↓こうだとどう? $xml["A"]["B"]
補足
そうすると Warning: Invalid argument supplied for foreach() とエラーが出てしまいました。 普通の連想配列の場合は、0,1,2,と表示されると思うのですが xmlの場合は何でこうなるのか謎です・・・。
お礼
別に変数を用意したらいけました。 普通の連想配列とはわけが違うんですね。