SimpleXML を使用して XML に変換する必要がある配列があります。以下の方法はほとんどの作業を行っていますが、1 つ問題があります。次のような構造を生成することはできません。
$xmlFields = array(
'rootElt' => array(
'field1' => '',
'field2' => '',
'field3' => array(
'field4' => array(
'income' => array(
'owner' => '',
'description' => '',
),
'income' => array(
'owner' => '',
'description' => '',
),
),
)
)
);
セクション「field4」の最後の「収入」のみを書き込みますが、次のような出力が必要です。
<field4>
<income>
<owner>....</owner>
<description>....</description>
</income>
<income>
<owner>....</owner>
<description>....</description>
</income>
</field4>
誰かがこの機能を修正するのを手伝ってくれませんか:
/**
* @param array $dataArr
* @param SimpleXMLElement $xmlObj
*/
private function array2xml( $dataArr, $xmlObj ) {
foreach ( $dataArr as $key => $value ) {
if ( is_array($value) ) {
if ( !is_numeric($key) ) {
$subnode = $xmlObj->addChild( $key );
self::array2xml( $value, $subnode );
} else {
self::array2xml( $value, $xmlObj );
}
} else {
$xmlObj->addChild( $key, $value );
}
}
}