我遇到了解析我的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个值,则以下代码正常工作,并显示返回的容器名称。 如果返回超过1个值$ Item-> String成为阵列。有没有办法确定stdclass包含的值?

var_dump,只有1个容器

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

var_dump,超过1个容器

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

提前感谢,

matt

有帮助吗?

解决方案

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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top