2012-03-29 3 views
0

J'ai un script qui tente de mettre à jour une collection MongoDB avec une réponse xml reçue d'un serveur. J'envoie simplexml_load_string() sur la réponse. Cependant, lors de la mise à jour des champs, il ajoute une clé '0' supplémentaire à la valeur que j'essaye d'ajouter. Voici le code:Mise à jour de MongoDB en utilisant les variables de fonction simplexml_load_string PHP ajoutant une valeur supplémentaire à la valeur

$xml = simplexml_load_string($response); 
if($xml->type == "reject") { 
    $status = $xml->type; 
    $message = $xml->message; 
} 
$update = array('$set' => array('status' => $status, 'response' => $message)); 

C'est ce que je me attends:

{ "_id" : ObjectID("..."), "status" : "reject", "response" : "The message." } 

Cependant, voici l'entrée qui est en cours d'enregistrement dans MongoDB:

{ "_id" : ObjectID("..."), "status" : { "0" : "reject" }, "response" : { "0" : "The message." } } 

Toute idée est en cours, ou des suggestions sur la façon de le réparer? Merci!

+0

Pouvez-vous modifier votre message avec le code XML que vous recevez actuellement? Merci! –

Répondre

0

$xml->type et $xml->message sont probablement des objets, pas des chaînes. Vous voudrez peut-être var_dump pour voir ce qu'il est réellement et ensuite le convertir en une chaîne.

+0

Oui, il semble que la longueur de la chaîne soit envoyée, aussi - 'object (SimpleXMLElement) # 7 (2) {[" type "] => string (5)" erreur "[" message "] => chaîne (42) "Le montant demandé fourni n'est pas valide"} '. – BSLRNI

+0

Hmm, on dirait que ce sont des ficelles de ça, cependant. Vous pouvez essayer de mettre à jour var_dumping $ pour être sûr. – kristina

+0

'array (1) {[" $ set "] => array (3) {[" responseTime "] => chaîne (8)" 22:08:18 "[" status "] => objet (SimpleXMLElement) # 8 (1) {[0] => chaîne (5) "erreur"} ["réponse"] => objet (SimpleXMLElement) # 9 (1) {[0] => chaîne (42) "Le montant demandé est non valide "}}}' Cela vient-il de PHP ou est-ce que MongoDB l'ajoute? – BSLRNI

Questions connexes