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

値に複数のオカレンスがある場合、最新のキーがその値として使用され、他のすべてのキーは失われます。

passwordがusernameと等しい場合、array_flipは1つの要素のみを含む配列を返します

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

この場合、array_walk_recursiveの代わりにforeachを使用します

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 に答える