xmldataに基づいて配列構造を構築しようとしています。問題はImの扱い方に関係していると思います$finalData
。最終的には、レコードの3つの配列を含むフラット化された配列が必要ですが、最初にXMLデータを正しく解析してから、データの配列をフラット化する必要があると思います。XMLデータを解析するためにコードを修正したかったので、最初の質問はXMLデータを解析するためにこのコードを修正する方法ですが、その後、最終的なデータ配列をフラット化する方法に取り組みました(個々のrecord
構造が必要です)最終的に必要な関連情報が含まれています。ユーザーによるデータのインポートを処理し、最終的にはデータを含む個々のコンポーネントのみを取得しようとしていると言えます。
public function processXml($xmldata,$finalData=array())
{
$finalData = array();
if($xmldata instanceof SimpleXMLElement){
foreach($xmldata as $idata){
$this->processXml($idata,$finalData);
}
} else {
array_push($finalData,$xmldata);
}
return $finalData;
}
これがXMLデータです(ユーザーがXMLデータに何をインポートするかわからないことに注意してください。これは、私が作成したテストデータです)。
`<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<records>
<somekey>
<record>
<firstname>Jonathan</firstname>
<lastname>Kushner</lastname>
</record>
<record>
<firstname>Dustin</firstname>
<lastname>Kushner</lastname>
</record>
<record>
<firstname>Cameron</firstname>
<lastname>Kushner</lastname>
</record>
</somekey>
</records>
</configdata>`
注:提供される回答は、xpathとdomdocumentを使用しています。私は再帰と平坦化を学ぼうとしているので、それはより良いアプローチですが、再帰と平坦化だけを使用してこれを実装する方法を理解したいと思います。