2017-03-06 12 views
1

カスタマーポータルを構築しています。私はオブジェクトを返すWebサーバー上でSOAP関数を呼び出さなければなりません。そのオブジェクトには、より多くのオブジェクトがあります。配列を含むオブジェクトを含む配列をテーブルにエコーするときに助けが必要

2層目のオブジェクトのようなものです。

第2層オブジェクトには、データを含む配列があり、それは画面上の表に表示する必要があります。

私は現在、エコーを適切にループする方法を見つけることができないようです。

これは、XML、SOAP呼び出しの戻りである:

<object> 
    <value>string</value> 
    <value>string</value> 
    <value>string</value> 
    <object> 
     <value>string</value> 
     <value>string</value> 
     <value>string</value> 
    <object> 
     <value>string</value> 
     <value>string</value> 
     <value>string</value> 
    </object> 
    </object> 
</object> 

は、これは私のコードです:

// soapcall returns $response 

    $response = (array)$stdClass; 
    $_UserData = $response; 
    $UserData = (array)$_UserData; 

    echo '<table id="table"> 
      <tr> 
      <th>Data</th> 
      <th>Value</th> 
      </tr>'; 

    foreach ($UserData as $key => $data){ 
    if (is_object($data)) { 
     $array = (array)$data; 
     foreach ($array as $key => $data) { 
     if (is_object($data)) { 

     } 
     else { 
      echo '<tr><td>' . $key . '</td><td>' . $data . '</td></tr>'; 
     } 
     } 
    } 
    else { 
     echo '<tr><td>' . $key . '</td><td>' . $data . '</td></tr>'; 
    } 
    } 
    echo '</table> 
    </br> 
<form action="logout.php"> 
    <button>Log out</button> 
</form>'; 

は、このループを単純化する方法はありますか?

答えて

1

あなたは同じようにオブジェクトデータをエコーすることができます

echo '<tr><td>' . $key . '</td><td>' . $data . '</td></tr>'; 

foreach文は配列やオブジェクトの両方で動作します。

また、試すことができます。

echo '<tr><td>' . $key . '</td><td>' . $key->$data . '</td></tr>'; 
+0

を私はエラーメッセージを取得することを行う場合:「キャッチできる致命的なエラー:クラスはstdClassのオブジェクトに文字列に変換することができませんでした」 – ferdi0314

関連する問題