Передача массива объектов из WCF в PHP – извлечение информации

У меня есть метод в службе WCF C #, который отвечает за извлечение информации из базы данных и передачу этой информации в виде массива простых объектов на сайт PHP.

public class Person { public int Id; public string Name; public string Lastname; public string Phone; } ... public Person[] GetPerson(){...} 

Поскольку я не очень хорошо разбираюсь в PHP, моя проблема заключается в следующем: как мне извлечь информацию из массива в конце PHP? Самая распространенная ошибка, которую я получаю: Нельзя использовать объект типа stdClass как массив. Я пробовал много разных вещей. Простой фрагмент кода PHP:

 <?php $client = new SoapClient("http://localhost:62532/Service1.svc?wsdl"); $ws = $client->GetPerson(); $wsr = $ws->GetPersonResult; for($i = 0; $i < count($wsr); $i++) { echo $wsr[$i]->Id . "\n"; echo $wsr[$i]->Name . "\n"; echo $wsr[$i]->Lastname . "\n"; echo $wsr[$i]->Phone . "\n"; } ?> 

Не работает. Когда я звоню:

print_r($wsr);

чтобы проверить результат возврата метода:

 stdClass Object ( [Person] => Array ( [0] => stdClass Object ( [Id] => 1 [Name] => John [Lastname] => Abc [Phone] => 759687364 ) [1] => stdClass Object ( [Id] => 2 [Name] => Joe [Lastname] => Def [Phone] => 487512654 ) [2] => stdClass Object ( [Id] => 3 [Name] => Mike [Lastname] => Ghi [Phone] => 874587918 ) [3] => stdClass Object ( [Id] => 5 [Name] => Nick [Lastname] => Jkl [Phone] => 000000000) ) ) 

Поэтому, основываясь на результатах, весь обмен данными между WCF и PHP работает отлично, поскольку это правильные результаты, но я не знаю, как легко (что-то в соответствии с тем, что я пробовал выше). Доступ к ним из массива, который возвращается.

Я искал достаточно для решения, но не нашел ничего, что сработало бы. Любая помощь будет очень признательна, спасибо.

EDIT: Хорошо, поэтому решение:

 for($i = 0; $i < count($wsr->Person); $i++) { echo $wsr->Person[$i]->Id . "\n"; echo $wsr->Person[$i]->Name . "\n"; echo $wsr->Person[$i]->Lastname . "\n"; echo $wsr->Person[$i]->Phone . "\n"; } 

Спасибо за ваши ответы.

Используйте $wsr->Person[$i]->Id и т. Д.

Просто обратите внимание, используя «classmap», чтобы ваши объекты SOAP соответствовали объектам PHP, иначе бесполезно создавать класс «Человек», а не отображать его.

http://www.php.net/manual/en/soapclient.soapclient.php

 $server = new SoapClient( "http://localhost:62532/Service1.svc?wsdl", array( 'classmap' => array( 'person' => "person" ) ) ); 

В результате этого будет возможность получить реальный объект ARRAY of PERSON.

Я сделал это в обратном методе, потребляя веб-сервис PHP с помощью c #, и он творит чудеса …