2011-05-25 34 views
1

我有一个WCF操作GetColors,它返回一个颜色列表GetColorsResult。我得到的结果很好,但我如何通过GetColorsResult在PHP中循环并回显每个元素?从php中的wcf服务回应XML结果?

我做:

<?php 

header('Content-Type: text/plain'); 

echo "WCF Test\r\n\r\n"; 

// Create a new soap client based on the service's metadata (WSDL) 
$client = new SoapClient('http://localhost:8181/Colors.svc?wsdl',array(
         'login' => "test", 'password' => "test")); 


$retval = $client->GetColors(); 


//Need to loop throuh $retval here 

echo $retval->GetColorsResult; //This throws error. 




?> 

有没有办法来控制结果的名称,例如,我没有指定WCF返回GetColorsResult,它附加结果我的方法调用。

stdClass Object 
(
    [GetColorsResult] => stdClass Object 
     (
      [Color] => Array 
       (
       [0] => stdClass Object 
        (
         [Code] => 1972 
         [Name] => RED 
        ) 

       [1] => stdClass Object 
        (
         [Code] => 2003 
         [Name] => BLUE 
        ) 

       [2] => stdClass Object 
        (
         [Code] => 2177 
         [Name] => GREEN 
        ) 
       ) 
     ) 
    ) 
+0

你可能想要添加一些你已经有的代码...(没有downvote的方式) – Mr47 2011-05-25 20:29:53

+0

我会很高兴添加代码。不知道为什么downvote,我不熟悉php。 – Xaisoft 2011-05-25 20:30:37

+0

你可以尝试print_r($ retval)并发布输出吗? – TerenceJackson 2011-05-25 20:34:50

回答

2

关于您的print_r这应该给你的所有值:

<?php 
$colorResult = $retval->GetColorsResult; 
foreach($colorResult->Color as $color){ 
    echo $color->Code . " " . $color->Name . "<br />"; 
} 
?> 
同样,在做的print_r时($ RETVAL)追加应对GetColors的响应(GetColorsResponse)

输出

这是你需要的吗?

BR,

TJ

编辑: 如果你只是需要进行调试,你应该使用的print_r。 看看这里:print_r PHP Documentation

+0

我完全按照你所说的做了,它不会抛出错误,但它只是打印出11223330000,但我只是在做:echo $ color->名称+“
” – Xaisoft 2011-05-25 21:05:57

+0

我删除了
,它工作,但现在一切都在一条线上。 – Xaisoft 2011-05-25 21:07:45

+1

我不得不做一个。而不是+连接。谢谢。 – Xaisoft 2011-05-25 21:10:38