【发布时间】:2012-01-06 20:22:36
【问题描述】:
我在 C# WCF 服务中有一个方法,它负责从数据库中提取信息,然后将该信息作为简单对象数组传递给 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 之间的整个数据交换工作正常,因为这些是正确的结果,但我不知道如何轻松(类似于我上面尝试过的内容...... ) 从返回的数组中访问它们。
我已经搜索了很多解决方案,但没有找到任何可行的方法。任何帮助将不胜感激,谢谢。
编辑:好的,所以解决方案是:
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";
}
感谢您的回答。
【问题讨论】: