1

ループしたいオブジェクトの配列を含むオブジェクトがあります。オブジェクトの print_r は次のようになります。

SimpleXMLElement Object
(
    [NewDataSet] => SimpleXMLElement Object
        (
            [Table1] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [DiamondID] => 44696069
                            [ShapeTitle] => Pear
                            [Weight] => 0.300
                            [ColorTitle] => G
                        )

                    [1] => SimpleXMLElement Object
                        (
                            [DiamondID] => 44775332
                            [ShapeTitle] => Pear
                            [Weight] => 0.300
                            [ColorTitle] => G
                        )

                    [2] => SimpleXMLElement Object
                        (
                            [DiamondID] => 46959935
                            [ShapeTitle] => Pear
                            [Weight] => 0.340
                            [ColorTitle] => D
                        )
                )
        )
)

オブジェクトは、SOAP 呼び出しを介して取得している XML からのものです。

「Table1」配列をループして、各オブジェクトにアクセスしたいと思います。私はこれを次の方法で行っています:

foreach($rapnetresult->NewDataSet->Table1 as $itemno=>$diamond) {
  echo "<p>Item #$itemno<br>";
  echo "DiamondID: " . $diamond->DiamondID . "<br>";
  echo "ShapeTitle: " . $diamond->ShapeTitle. "<br>";
  echo "Weight: " . $diamond->Weight"</p>";
}

これにより、次の出力が生成されます。

Item #Table1
DiamondID: 44696069
ShapeTitle: Pear
Weight: 0.300

Item #Table1
DiamondID: 44775332
ShapeTitle: Pear
Weight: 0.300

Item #Table1
DiamondID: 46959935
ShapeTitle: Pear
Weight: 0.340

これは、各オブジェクトにアクセスできる場所です。しかし、$itemno 変数の値が常に "Table1" である理由がわかりません。私はそれが Table1 配列キー、つまり 0、1、2 などであると予想していました。

期待されるキーを取得できない理由を誰か説明してもらえますか? そして、鍵を手に入れるために私は何をしなければなりませんか?

4

1 に答える 1