• ベストアンサー

添え字が表示できない

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,」と表示させるにはどう記述すればよいのでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

別に変数を用意するしかないかも 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としか返ってこない

sutesute00
質問者

お礼

別に変数を用意したらいけました。 普通の連想配列とはわけが違うんですね。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.3

>xmlの場合は何でこうなるのか http://www.php.net/manual/ja/ref.simplexml.php DOMでもそうだけど単純な連想配列じゃないのがXMLのツリーだから、nodeNameか何かで持ってこないと表示できないんじゃないかな。 そんな気がするよ。

sutesute00
質問者

お礼

普通の連想配列とは違うんですね。。 わざわざありがとうございました♪

すると、全ての回答が全文表示されます。
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>$xml->A->B ↓こうだとどう? $xml["A"]["B"]

sutesute00
質問者

補足

そうすると Warning: Invalid argument supplied for foreach() とエラーが出てしまいました。 普通の連想配列の場合は、0,1,2,と表示されると思うのですが xmlの場合は何でこうなるのか謎です・・・。

すると、全ての回答が全文表示されます。

専門家に質問してみよう