Question

J'ai un problème pour analyser les données renvoyées par mon service Web WCF.

Le service Web repasse un tableau de chaînes, ces données sont placées dans un objet STDCLASC, le problème que je rencontre est que les données changent selon qu'il y a 1 ou plusieurs objets.

Ne jamais traité avec des objets STDCLASS, je ne suis pas vraiment sûr de quoi faire.

Ce qui suit est le code que je suis en train d'utiliser, $ conteneurs est la valeur de retour de l'appel de service Web.

<ul>
<?php var_dump($containers)?>
<?php foreach($containers as $item):?>
<li>
<?php 
echo $item->string;
?>
</li>
<?php endforeach;?>
</ul>

S'il n'y a que 1 Valeur étant renvoyée, le code suivant fonctionne bien et affiche le nom du conteneur renvoyé. S'il y a plus d'une valeur retournée $ article-> String devient une matrice.Y a-t-il de toute façon pour déterminer quelles valeurs contiennent STDCLASS?

var_dump avec juste 1 conteneur

object(stdClass)[13]
public 'GetContainersResult' => 
object(stdClass)[14]
public 'string' => string 'container1' (length=10)

var_dump avec plus d'un conteneur

object(stdClass)[13]
public 'GetContainersResult' => 
object(stdClass)[14]
public 'string' => 
array
0 => string 'container1' (length=10)
1 => string 'container2' (length=10)

Merci d'avance,

mat

Était-ce utile?

La solution

you can use is_array($item->string) to check if you have an array and then process it appropriately. Based on your code, I think something like this might work for you.

<?php var_dump($containers)?>
<ul>
<?php foreach($containers as $item):
         if(is_array($item->string)):
            foreach($item->string as $subitem):
                <li class="subitem"><?php echo $subitem; ?></li>
            <?php 
            endforeach;
         else: ?>
        <li><?php echo $item->string; ?></li>
          <?php 
          endif;
      endforeach;    
?>
</ul>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top