Problème avec array_map

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec array_map

par botwin » 31 juil. 2009, 00:55

Cool merci pour vos réponses.

Donc ok je comprend mieux maintenant pourquoi ça ne fonctionne pas...

Alors j'ai essayé get_object_vars() mais ça ne retourne rien...

J'ai aussi tenté le coup avec array_walk et cie puis avec (array) toujours rien...

C'est vraiment bizarre tout de même non ?

Avez-vous une idée de comment il faut procéder ?


Edit ---------------------

Bon j'ai un poil avancé, avec le code ci-dessous ça fonctionne bien mais uniquement si la requête XPath porte sur 1 seul niveau (//product).
Si la requête est de la forme (//product/name) ou si dans le fichier xml <product> n'a pas d'enfant et juste un texte ça foire... :cry:

Code : Tout sélectionner

function cleanxml($var) { if (is_array($var)) { return array_map('cleanxml', $var); } elseif (is_object($var)) { return array_map('cleanxml', get_object_vars($var)); } else { return str_replace('[:amp:]', '&', $var); } } $xml = simplexml_load_file(DBPRODUCTS); $result = $xml->Xpath('//product'); print_r(cleanxml($result));
A votre avis ça vient d'où ? ya pas 36 solutions, le contenu de $var est soit array soit object soit string et devrait donc ressortir non ?

Re edit -------------------------

Hourra ! problême réglé ! :) :) :) Merci !

par thehawk » 30 juil. 2009, 21:56

Je pense que cette fonction te permettra d'avancé :)
get_object_vars()

Bonne chance Hawk[/url]

par momox » 30 juil. 2009, 20:28

Ce que retourne la fonction xpath sur une ressource simplexml est un objet, donc tu ne pourras pas le traiter de la sorte vu qu'il n'est pas de type "array".

Problème avec array_map

par botwin » 30 juil. 2009, 19:43

Bonjour à tous,

Alors voilà j'essaye d'appliquer avec la fonction array_map une fonction de nettoyage sur un tableau issu d'une requête XPath et ça ne fonctionne pas, des lignes vides sont renvoyées...
Voici le code :

Code : Tout sélectionner

function cleanxml($var) { if (is_array($var)) { return array_map('cleanxml', $var); } else { return str_replace('[:amp:]', '&', $var); } } $xml = simplexml_load_file(DBFILE); $result = $xml->Xpath('//product'); print_r(array_map('cleanxml', $result));
D'où ça peut venir ? ça fait bien une journée que je m'arrache les cheveux la dessus... c'est rageant !

Merci pour votre aide