2012-01-06 10 views
2

私は、データベースから情報を抽出し、その情報をPHPサイトに単純なオブジェクトの配列として渡すC#WCFサービスのメソッドを持っています。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の間の全体のデータ交換が正常に動作しますそれらは正しい結果ですが、私は簡単に(上で試したことのある行に沿った何か)、返されている配列内からそれらにアクセスする方法がわかりません。

私はかなり解決策を探しましたが、うまくいくものは見つかりませんでした。どんな助けでも大変感謝します。

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"; 
} 

ありがとう:[OK]を、解決策があるそう。あなたのSOAPオブジェクトになるだろう「クラスマップ」を使用して使用$wsr->Person[$i]->Id

答えて

2

など

+0

が、これは非常に有用だったと働いていた、ありがとうございます。 – mishlen

+0

私にも有益な答えです...答えとしてマークされているはずです。 –

0

ただ、サイドノートでは、そうでなければ、クラス「人」を作成するために役に立たないですし、それにマップしない、PHPのオブジェクトに対応します。

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

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

これは何に起因しますと、PERSONオブジェクトの本当のARRAYを受信する機能です。

私は、C#とPHPのWebサービスを消費することにより、逆の方法でそれをやったし、それは驚異を働かせる...

関連する問題