2009-10-29 44 views
0

我有一個SOAP結果集,nuSoap擴展已經變成了一個漂亮的數組。我確信我可以從中獲得一些循環,以滿足我想要的 - 但似乎必須有一種更快的方式來循環訪問特定的數據元素。這裏是數組:PHP - 通過鍵逐步通過多維數組

Array 
(
    [xxxResult] => Array 
    (
     [NewDataSet] => Array 
     (
      [Table] => Array 
      (
       [0] => Array 
       (
        [ID] => 472 
        [Name] => abc 
        [Weight] => 0.15 
        [AppID] => 5133356895445 
       ) 

       [1] => Array 
       (
        [ID] => 7396 
        [Name] => def 
        [Weight] => 0.11 
        [AppID] => 51348575554 
       ) 

      ) 

     ) 

    ) 

) 

所以我想要做的就是簡單地遍歷這使得我得到:

<tr> 
    <td>[ID]</td> 
    <td>[Name]</td> 
    <td>[Weight]</td> 
    <td>[AppID]</td> 
</tr> 

...每個錶行。

似乎應該有比[xxxResult] [NewDataSet] [表] [0] [ID]等

回答

4

這樣的更快的方法?

<?php 

$tables = $soapResult['xxxResult']['NewDataSet']['Table']; 

foreach ($tables as $table) { 

?> 
    <tr> 
     <td><?php echo $table['ID']; ?></td> 
     <td><?php echo $table['Name']; ?></td> 
     <td><?php echo $table['Weight']; ?></td> 
     <td><?php echo $table['AppID']; ?></td> 
    </tr> 
<?php 

} 
+0

我想他想要一個更一般的解決方案,前兩個數組可能有多個元素。在這種情況下,使用三個foreach循環會不會更聰明 - 以防萬一?當然是 – 2009-10-29 18:58:40

+0

!謝謝。真的需要確保得到一些睡眠:) 白金:如果我不知道結果集會相當靜態,你是對的我需要一個更動態的解決方案。在這種情況下,供應商和客戶在同一家公司是不同的應用程序,所以我可以知道什麼時候會發生變化。 – menkes 2009-10-29 19:12:12

0

像:

for ($row = 0; $row < 2; $row++){ 
echo "<tr>"; 

for ($col = 0; $col < 4; $col++) 
{ 
    echo "<td>".$myarray[$row][$col]."</td>"; 
} 

echo "</tr>"; 

}

當然,如果行列的量的變化,你需要得到數組的長度。