2014-03-05 61 views
1
$data = new Data(); 
$data->Date='29-07-1902'; 
$data->Person='Elton John'; 
$data->Costs[]=array('Expense','100 EUR'); 
$data->Costs[]=array('Tax','250 EUR'); 

我想通過此對象進行迭代並將其顯示爲HTML表格。以下是我迄今的嘗試。在迭代通過php對象與數組時遇到困難

<table border="1" style="width:300px"> 
    <?php 
foreach($data as $key => $value) { 
    echo "<tr><td> $key </td> <td> $value</td></tr>"; 
} 
echo "\n"; 
?> 
    </table> 

我想通過函數完成這個任務。另外,不同的成本應該出現在新行中,所以費用有它自己的行,而稅有它自己的行。

回答

0

你的數組實際上是multimensional所以你需要循環再次在您的值是數組,如果我理解你正確的,這是你所需要的

<table border="1" style="width:300px"> 
<?php 
foreach($data as $key => $value) { 
    if(is_array($value)) 
    { 
     echo "<tr><td> $key </td> <td></td></tr>"; 
     foreach($value as $kk => $val) 
     { 
      echo "<tr><td> $kk </td> <td> $val</td></tr>"; 
     } 
    } else { 
     echo "<tr><td> $key </td> <td> $value</td></tr>"; 
    } 
} 
echo "\n"; 
?> 
</table> 
+0

你的'foreach'沒有關閉。 –

+0

對,謝謝你糾正這 – Fabio

0

沒有可能是最好的方法,但嘗試:

<table border="1" style="width:300px"> 
<?php 
foreach($data as $key => $value) { 

    echo "<tr><td> $key </td> <td> $value</td></tr>"; 
    if(is_array($value)==true){ 
     foreach($value as $ind){ 
      echo "<tr>"; 
      if(is_array($ind)==true){ 
       foreach($ind as $i=>$v){ 
       echo "<td> $v </td>"; 
       } 
      } 
      echo "</tr>"; 
     } 
    } 
} 
echo "\n"; 
?> 
</table> 

但是,如果你的$data->Costs[]具有了內陣列狀array('Expense',array('100 EUR','50 EUR'));

+0

確定那種工作。現在第1列「Costs」的行有「Array」作爲第2列,我希望它是空的。另外什麼是最好的方法,我試圖用一個函數來做到這一點,我可以使用任何對象。 – Elton

+0

@Elton您傳遞給函數的數組結構是否保持不變或者它是否也有嵌套數組? –

0
<table border="1" style="width:300px"> 
    <?php 
foreach ($data as $key => $value) { 
if (!is_array($value)) { 
    echo "<tr><td> $key </td> <td> $value</td></tr>"; 
} else { 
    echo "<tr><td colspan='2'>$key</td></tr>"; 
    foreach ($value as $val) { 
    echo "<tr><td> $val[0] </td> <td> $val[1]</td></tr>"; 
    } 
} 
} 
?> 
</table> 
這是不行的

這將工作在你的特定情況下(如果數組長度不會改變)...但是,不確定通用解決方案,但你可以稍微調整一下(計數數組值,格式表等等).. 。:)