電子書籍の厳選無料作品が豊富!

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

A 回答 (3件)

別に変数を用意するしかないかも


C/C++が関心カテゴリに入っているのでイテレータに関する知識があるものとする(ってか俺は最近になって漸く読んでいる)

http://www005.upp.so-net.ne.jp/episteme/html/stl …

で,SimpleXMLIteratorが何を返すかというとcurrent 【Element】で

http://www.php.net/~helly/php/ext/spl/classSimpl …

やってみるとわかるが,


<?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としか返ってこない
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/30 22:14

>xmlの場合は何でこうなるのか


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

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

お礼日時:2008/01/30 22:15

>$xml->A->B


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

この回答への補足

そうすると
Warning: Invalid argument supplied for foreach()
とエラーが出てしまいました。


普通の連想配列の場合は、0,1,2,と表示されると思うのですが
xmlの場合は何でこうなるのか謎です・・・。

補足日時:2008/01/29 17:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!