1

WCF Web サービスから返されるデータの解析に問題があります。

Web サービスは文字列の配列を返しています。このデータは StdClass オブジェクトに入れられます。私が遭遇している問題は、オブジェクトが 1 つ以上あるかどうかによってデータが変化することです。

stdclass オブジェクトを扱ったことがないので、どうすればよいかわかりません。

以下は私が現在使用しているコードです。$containers は Web サービス呼び出しからの戻り値です。

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

返される値が 1 つだけの場合、次のコードは正常に機能し、返されたコンテナー名を表示します。返される値が複数ある場合、$item->string は配列になります。stdclassに含まれる値を特定する方法はありますか?

コンテナが 1 つだけの var_dump

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

複数のコンテナーを持つ var_dump

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

前もって感謝します、

マット

4

1 に答える 1

0

is_array($item->string)配列があるかどうかを確認し、適切に処理するために使用できます。あなたのコードに基づいて、このようなものがうまくいくと思います。

<?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>
于 2011-02-20T18:37:30.680 に答える