我有一个需要使用 SimpleXML 将其转换为 XML 的数组。下面的方法几乎可以完成工作,但有一个问题。它不能生成这样的结构:
$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 );
}
}
}