PHP Collegamento al servizio WCF Parsing Dati di restituzione
Domanda
Sto avendo un problema analizzare i dati restituiti dal mio servizio Web WCF.
Il servizio Web sta passando indietro di una serie di stringhe, questi dati vengono inseriti in un oggetto STDClass, il problema che incontro è che i dati cambiano in base al fatto che ci siano 1 o più oggetti.
Non avendo mai affrontato gli oggetti stdclass Non sono davvero sicuro di cosa fare.
Di seguito è riportato il codice che sto utilizzando attualmente, $ contenitori è il valore di ritorno dalla chiamata di servizio Web.
<ul>
<?php var_dump($containers)?>
<?php foreach($containers as $item):?>
<li>
<?php
echo $item->string;
?>
</li>
<?php endforeach;?>
</ul>
.
Se c'è solo 1 valore restituito, il seguente codice funziona bene e visualizza il nome del contenitore restituito. Se c'è più di 1 valore restituito $ Item-> String diventa array.C'è comunque per determinare quali valori contiene stdclass?
var_dump con solo 1 contenitore
object(stdClass)[13]
public 'GetContainersResult' =>
object(stdClass)[14]
public 'string' => string 'container1' (length=10)
.
var_dump con più di 1 contenitore
object(stdClass)[13]
public 'GetContainersResult' =>
object(stdClass)[14]
public 'string' =>
array
0 => string 'container1' (length=10)
1 => string 'container2' (length=10)
.
Grazie in anticipo,
Matt
Soluzione
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>