这是我的代码,
$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>
那我怎么解决呢?
答案 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);
}
);