문제

WCF 웹 서비스가 반환되는 데이터를 구문 분석하는 데 문제가 있습니다.

웹 서비스는 문자열 배열을 전달 하고이 데이터는 STDCLASS 객체에 넣습니다. 내가 발생하는 문제는 데이터가 1 개 이상의 오브젝트가 있는지 여부에 따라 변경된다는 것입니다.

STDCLASS 객체를 처리하지 않은 적이없는 것은 실제로 무엇을 해야할지 확신하지 않습니다.

다음은 현재 사용하고있는 코드이며 $ Containers는 웹 서비스 호출의 반환 값입니다.

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

단위 값이 반환되는 경우 다음 코드가 잘 작동하고 반환 된 컨테이너 이름을 표시합니다. 1 개 이상의 값이 리턴되면 $ item-> 문자열은 배열이됩니다.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)
.

미리 감사드립니다

매트

도움이 되었습니까?

해결책

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