Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP simplexml_load_string函数变量更新MongoDB,添加额外的';0';价值关键_Php_Mongodb_Xml Parsing_Simplexml_Mongodb Php - Fatal编程技术网

使用PHP simplexml_load_string函数变量更新MongoDB,添加额外的';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响应更新MongoDB集合。我在响应上调用simplexml\u load\u string()。但是,在更新字段时,它会向我尝试添加的值添加一个额外的“0”键。代码如下:

$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']