php中的数组到xml转换错误

时间:2012-11-14 10:44:51

标签: php xml arrays

这是我的代码,

 $row=array(username=>'username',password=>'password');
 $var=array_flip($row);
 $xml = new SimpleXMLElement('<root/>');
 array_walk_recursive($var, array ($xml, 'addChild'));
 $result= $xml->asXML();

如果用户名和密码不同,请说'abcd'&amp;分别是'efgh',xml看起来像这样:

<root>
<username>abcd</username>
<password>efgh</password>
</root>

但如果它们相同,则说'abcd',xml看起来像这样:

<root>
<password>abcd</password>
</root>

我希望它应该显示为

<root>
<username>abcd</username>
<password>abcd</password>
</root>

那我怎么解决呢?

2 个答案:

答案 0 :(得分:1)

  

http://www.php.net/manual/en/function.array-flip.php

     

如果值有多次出现,则最新的键将用作其值,并且   所有其他人都将失去。

如果password等于username,则array_flip返回只包含一个元素的数组

array_flip(array(username=>'abcd',password=>'abcd'))
// will return array('abcd'=>'password')

你在这种情况下使用foreach而不是array_walk_recursive

foreach ($row as $k => $v)
   $xml->addChild($k, $v);

答案 1 :(得分:0)

尝试

array_walk_recursive($row, function ($value, $key) use ($xml) { 
    $xml->addChild($key, $value); 
  }
);