У меня есть объект, содержащий массив объектов, которые я хочу пропустить. Print_r объекта выглядит следующим образом:Loop через объект, содержащий массив объектов
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
)
)
)
)
Объект вышел из некоторого XML, что я ВОССТАНОВЛЕНИЕ с помощью вызова SOAP.
Я хотел бы пройти через массив «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 всегда имеет значение «Таблица1». Я бы предположил, что это ключи массива Table1, то есть: 0, 1, 2 и т. Д.
Может кто-нибудь объяснить, почему я не получаю ожидаемый ключ? И что я должен сделать, чтобы получить ключ?
Ваш foreach кажется правильным hmmm –
Я получаю такое же поведение с отдельным тестом. $ itemno всегда является тегом, а не индексом .. может быть по дизайну по какой-то причине .. – Ben
вы можете сохранить отдельный индекс (init до нуля до цикла и ++ на каждой итерации) – Ben