使用PHP simplexml_load_string函数变量更新MongoDB,添加额外的';0';价值关键
我有一个脚本试图用从服务器收到的xml响应更新MongoDB集合。我在响应上调用simplexml\u load\u string()。但是,在更新字段时,它会向我尝试添加的值添加一个额外的“0”键。代码如下:使用PHP simplexml_load_string函数变量更新MongoDB,添加额外的';0';价值关键,php,mongodb,xml-parsing,simplexml,mongodb-php,Php,Mongodb,Xml Parsing,Simplexml,Mongodb Php,我有一个脚本试图用从服务器收到的xml响应更新MongoDB集合。我在响应上调用simplexml\u load\u string()。但是,在更新字段时,它会向我尝试添加的值添加一个额外的“0”键。代码如下: $xml = simplexml_load_string($response); if($xml->type == "reject") { $status = $xml->type; $message = $xml->message; } $update
$xml = simplexml_load_string($response);
if($xml->type == "reject") {
$status = $xml->type;
$message = $xml->message;
}
$update = array('$set' => array('status' => $status, 'response' => $message));
这就是我所期待的:
{ "_id" : ObjectID("..."), "status" : "reject", "response" : "The message." }
但是,以下是保存在MongoDB中的条目:
{ "_id" : ObjectID("..."), "status" : { "0" : "reject" }, "response" : { "0" : "The message." } }
你知道发生了什么,或者对如何解决它有什么建议吗?谢谢
$xml->type
和$xml->message
可能是对象,而不是字符串。您可能希望var\u dump
查看它的实际内容,然后将其转换为字符串。您能用收到的实际XML编辑您的帖子吗?谢谢是的,看起来字符串长度也在发送中-object(simplexmlement)#7(2){[“type”]=>string(5)“error”[“message”]=>string(42)“请求提供的数量无效”}
。嗯,看起来它们是来自于此的字符串。您可以尝试使用var_dumping$update来确保。array(1){[“$set”]=>array(3){[“responseTime”]=>string(8)“22:08:18”[“status”]=>object(simplexmlement){[0]=>string(5)“error”}[“response”=>object(simplexmlement){[0]=>string(42)“请求提供的金额无效”}}
这是来自PHP还是MongoDB添加的?这就是为什么,它存储了一个SimpleXMLElement。我不熟悉SimpleXML,但您必须以字符串的形式获取它的内部;函数object2array($object){return@json_decode(@json_encode($object),1);}然后设置$status=$a['type']代码>和$message=$a['message']代码>