フォーマットが次の場合、c はオブジェクト配列で、各反復で foreach する必要があります。
$a->b->c
そして私は:
$z = $a->b
foreach($z as $key => $value)
echo $value['field'];
有効な値があっても、$key は null として表示されます。オブジェクトの名前を取得するにはどうすればよいですか?
XML:
<a>
<b>
<c />
<d />
<e />
</b>
</a>
PHPコード:
$xml = new SimpleXMLElement($file_url, true);
foreach($xml->b->children() as $node) {
echo $node->getName() . "\n";
}
あなたに与えるだろう:
c
d
b
詳細については、 PHPのマニュアルを参照してください。
次の XML の一部と、それを SimpleXML でロードするコードを検討してください。
$str = <<<XML
<root>
<a>
<b>
<c>glop</c>
<d>test</d>
</b>
</a>
</root>
XML;
$xml = simplexml_load_string($str);
$xml->a->b
配列に「キャスト」して、反復できるようにすることができます。
foreach ((array)$xml->a->b as $name => $value) {
echo "$name : $value<br />";
}
そして、次のような出力が得られます:
c : glop
d : test
(おそらくあなたのものとまったく同じ XML 文字列ではないかもしれませんが、これが解決策にたどり着くのに役立つことを願っています。そうであれば、質問を編集して、XML データと、取得したい出力を表示してもらえますか? )
配列への変換セクションで、マニュアルページを引用します。
オブジェクトが配列に変換される場合、結果は要素がオブジェクトのプロパティである配列になります。
キーはメンバー変数名ですが、いくつかの注目すべき例外があります。整数プロパティにはアクセスできません。プライベート変数には、変数名の前にクラス名が追加されています。保護された変数には、変数名の前に「*」が付加されます。