2009-10-29 72 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>"; 

}

当然,如果行列的量的变化,你需要得到数组的长度。