#php #wcf
#php #wcf
Вопрос:
У меня есть операция WCF GetColors, которая возвращает список цветов как GetColorsResult. Я получаю результат нормально, но как мне выполнить цикл GetColorsResult в php и повторить каждый элемент?
Я делаю:
<?php
header('Content-Type: text/plain');
echo "WCF Testrnrn";
// 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->GetColorsResu< //This throws error.
?>
Есть ли способ управлять именем результата, например, я не указывал WCF для возврата GetColorsResult, он добавлял результат к моему вызову метода. Аналогично, он добавляет ответ в 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
)
)
)
)
Комментарии:
1. Возможно, вы захотите добавить часть кода, который у вас уже есть … (кстати, не уменьшал голоса)
2. Я буду рад добавить код. Не знаю, почему понижающий голос, я не знаком с php.
3. Не могли бы вы попробовать print_r ($ retval) и опубликовать результат тоже?
4. @TerrenceJackson, я обновил свой пост, чтобы показать результаты print_r ($ retval)
Ответ №1:
что касается вашего print_r, это должно дать вам все значения:
<?php
$colorResult = $retval->GetColorsResu<
foreach($colorResult->Color as $color){
echo $color->Code . " " . $color->Name . "<br />";
}
?>
это то, что вам было нужно?
BR,
TJ
Редактировать: Если вам это нужно просто для целей отладки, вы должны использовать print_r . Посмотрите здесь: print_r Документация по PHP
Комментарии:
1. Я сделал именно то, что вы сказали, и это не выдает ошибку, а просто выводит 11223330000, но я просто делаю: echo $ color->Name «<br/>»
2. Я удалил <br /> и это сработало, но теперь все находится в одной строке.
3. Я должен был сделать . вместо для конкатенации. Спасибо.
4. <br/> является ли разрыв строки в html. Что именно вы хотите для вывода? Что-то вроде <Name> <Имя> или <Name>;<Name>
5. Я исправил это, но я должен был сделать. вместо