S'enregistrer | Rechercher | FAQ | Liste des Membres | Groupes d'utilisateurs | Connexion

  Nom d'utilisateur:    Mot de passe:       

  

Poster un nouveau sujet   Répondre au sujet Page 1 sur 1
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
MessagePosté le: Jeu Mar 07, 2013 4:57 pm    Sujet du message: Convertir de retour d'un WS en donnée organisées. Répondre en citant

SHEPSHEP
Projets


 
Inscrit le: 08 Avr 2009
Messages: 268
Localisation: /dev/null



Salut,

Voila une fonction qui permet de convertir le code dégueulasse (mix de stdclass et de Array) et aléatoire (suivant si le résultat est unique ou multiple) que retourne les WS.

Finis les stdclass imbriqués et les Array Map / Item !!
On récupère des tableaux multidimensionnels plus facilement exploitable.

Code:
function wsdl2array($elem){
   $arrayParams = array();
   if(is_array($elem) || is_object($elem)){
      foreach($elem as $line){
         if(isset($line->key)){
            $key = $line->key;
            if(!is_array($line->value) && !is_object($line->value)){
               $arrayParams[$key] = trim(strip_tags($line->value));
            }
            else{
               $arrayParams[$key] = wsdl2array($line->value);
            }
         }
         else{
            $arrayParams[] = wsdl2array($line);
         }
      }
   }
   else{
      $arrayParams[] = $elem;
   }
   
   return $arrayParams;
}


++
2ShEp
Voir le profil de l'utilisateur Envoyer un message privés Visiter le site web de l'utilisateur
MessagePosté le: Ven Mar 08, 2013 11:31 am    Sujet du message: Répondre en citant

SHEPSHEP
Projets


 
Inscrit le: 08 Avr 2009
Messages: 268
Localisation: /dev/null



Amélioration de la première function.
Le retour est beaucoup plus propre, les tableaux inutiles étant supprimés.

Code:
function wsdl2array($elem){
   $arrayParams = array();
   if(is_array($elem) || is_object($elem)){
      if(is_object($elem) && isset($elem->Map)){
         // supprime la class stdClass Map
         $elem = $elem->Map;
            if(is_array($elem)){
                foreach($elem as $k0 => $v0){
                    $arrayParams[] = wsdl2array2($v0);
                }
            }elseif(is_object($elem)){
                $arrayParams[] = wsdl2array2($elem);
            }
      }else{
         
      }
   }
   return $arrayParams;
}

function wsdl2array2($elem){
    if(is_object($elem) && isset($elem->item)){
        // supprime la class stdClass item
        $elem = $elem->item;
        foreach($elem as $k1 => $v1){
            if(is_object($v1)){
                if(is_object($v1->value)){
                    $t[$v1->key] = wsdl2array($v1->value);
                }else{
                    $t[$v1->key] = $v1->value;
                }
            }
        }
        $elem = $t;
    }
    return $elem;
}


Reste plus qu'a en faire une belle class mais pas le temps aujourd'hui.

++
2ShEp
Voir le profil de l'utilisateur Envoyer un message privés Visiter le site web de l'utilisateur
Poster un nouveau sujet   Répondre au sujet Page 1 sur 1

  


 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum



110251 Attacks blocked