PHP подключается к службе WCF при разборе возвращаемых данных - PullRequest
1 голос
/ 20 февраля 2011

У меня проблема с анализом данных, возвращаемых моим веб-сервисом 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 значение, то следующий код работает нормально и отображает имя возвращаемого контейнера. Если возвращено более 1 значения, $ item-> string становится Array. в любом случае, чтобы определить, какие значения содержит 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)

Заранее спасибо,

Мэтт

1 Ответ

0 голосов
/ 20 февраля 2011

вы можете использовать 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>
...