问题描述
|
我有一个WCF操作GetColors,它返回颜色列表作为GetColorsResult。我得到的结果很好,但是如何在PHP中遍历GetColorsResult并回显每个元素?
我在做:
<?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,而是将Result附加到我的方法调用中。同样,它将响应附加到GetColors的响应(GetColorsResponse)
执行print_r($ retval)时的输出:
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
)
)
)
)
解决方法
关于您的print_r,这应该为您提供所有值:
<?php
$colorResult = $retval->GetColorsResult;
foreach($colorResult->Color as $color){
echo $color->Code . \" \" . $color->Name . \"<br />\";
}
?>
这是您需要的吗?
BR
TJ
编辑:
如果仅出于调试目的需要它,则应使用print_r。
在这里看看:print_r PHP文档