0

这是我的代码,

 $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”和“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>

那么我该如何解决呢?

4

2 回答 2

1

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

如果一个值出现多次,则最新的键将用作其值,而其他所有键都将丢失。

如果密码等于用户名,则 array_flip 返回只有一个元素的数组

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

在这种情况下,您 cat 使用 foreach 而不是 array_walk_recursive

foreach ($row as $k => $v)
   $xml->addChild($k, $v);
于 2012-11-14T11:05:54.433 回答
0

尝试

array_walk_recursive($row, function ($value, $key) use ($xml) { 
    $xml->addChild($key, $value); 
  }
);
于 2012-11-14T10:56:35.077 回答