0 レビュー
2 回答
php-xmlを配列に変換し、ノード内のノードを処理できません
PHPでxmlスクリプトを連想配列に変換したい。 XMLスクリプトは:
<ages>
<Peter>
<Peterchild>4</Peterchild>
<Peterchild>6</Peterchild>
</Peter>
<Quagmire>30</Quagmire>
<Joe>34</Joe>
</ages>
そしてそれを配列に変換するために私が書いたコードは
${$xml->getName()} = array();
foreach($xml->children() as $child){
$ages[$child->getName()] = (string)$child;
}
出力を次のように表示します
Array
(
[Peter] =>
[Quagmire] => 30
[Joe] => 34
)
問題は、子の子(この例ではPeterの子)を再帰的にトラバースする条件を理解できないことです。これらのノードも考慮するようにこのコードを変更するにはどうすればよいですか?
わからない
0
レビュー
答え :
解決策:
1つのレベルを解析する関数を作成し、現在のレベル内のノードが見つかったときに関数自体を呼び出す必要があります。それはかなり複雑で、厄介になる可能性があります。好奇心から、SimpleXMLオブジェクトを使用してオブジェクト形式で必要なすべての情報にアクセスできるのに、なぜこれを行うのでしょうか。
わからない
0
レビュー
答え :
解決策:
${$xml->getName()} = array();
foreach($xml->children() as $child)
{
if (count($child->children() > 0)
{
foreach ($child->children as $childnode)
{
$ages[$childnode->getName()] = (string)$childnode;
}
}
else {
$ages[$child->getName()] = (string)$child;
}
}
これは、深さが1レベルの場合にのみ機能します。さらにレベルが高くなる場合は、レベルごとに循環する関数を作成する必要があります。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。