2010-04-01 132 views
3

我使用Smarty的爲我的網站,而我通過陣列試圖循環打印出表格的行...PHP Smarty的循環多維數組

數組是這樣的:

Array 
(
    [TM98800G] => Array 
     (
      [zid] => Array 
       (
        [0] => 90001 
        [1] => 90002 
        [2] => 90003 
        [3] => 90004 
        [4] => 90005 
       ) 

      [count] => Array 
       (
        [0] => 10 
        [1] => 10 
        [2] => 20 
        [3] => 25 
        [4] => 15 
       ) 

     ) 
    [TM76654G] => Array 
     (
      [zid] => Array 
       (
        [0] => 90301 
        [1] => 90302 
        [2] => 90303 
        [3] => 90304 
        [4] => 90305 
       ) 

      [count] => Array 
       (
        [0] => 25 
        [1] => 25 
        [2] => 20 
        [3] => 35 
        [4] => 45 
       ) 

     ) 
) 

我通過這個嘗試循環並打印出表格:

<h5>TM98800G </h5> 

<table> 
<tr> 
    <td>90001</td> 
    <td>10</td> 
</tr> 

<tr> 
    <td>90002</td> 
    <td>10</td> 
</tr> 

<tr> 
    <td>90003</td> 
    <td>20</td> 
</tr> 

<tr> 
    <td>90004</td> 
    <td>25</td> 
</tr> 

<tr> 
    <td>90005</td> 
    <td>15</td> 
</tr> 
</table> 

<h5>TM76654G</h5> 
<table> 
<tr> 
    <td>90301</td> 
    <td>25</td> 
</tr> 

<tr> 
    <td>90302</td> 
    <td>25</td> 
</tr> 

<tr> 
    <td>90303</td> 
    <td>20</td> 
</tr> 

<tr> 
    <td>90304</td> 
    <td>35</td> 
</tr> 

<tr> 
    <td>90305</td> 
    <td>45</td> 
</tr> 
</table> 

我嘗試過使用嵌套的foreach語句,並與部分打過,但我無法弄清楚如何遍歷它正確...

回答

6
{foreach from=$array key=header item=table} 
<h5>{$header}</h5> 

<table> 
    {foreach from=$table.zid key=k item=zid} 
    <tr> 
     <td>{$zid}</td> 
     <td>{$table.count.$k}</td> 
    </tr> 
    {/foreach} 
</table> 
{/foreach} 

應該這樣做,我認爲。

+0

可悲的是,不...我得到這個:語法錯誤:無法識別的標籤:$ table.count ['$ k'] – TwixxyKit 2010-04-01 18:12:00

+0

@Knock你使用的是什麼版本的Smarty? – anomareh 2010-04-01 18:13:11

+0

拿出反引導工作!謝謝你:) – TwixxyKit 2010-04-01 18:13:26

-3
foreach($array as $heading => $attrs) { 
    echo "<h5>" . $heading . "</h5>"; 
    echo "<table>"; 
    for($i=0; $i < count($attrs['zid']); $i++) { // will work as long 
               // as zid and count will 
               // always be the same size 
     echo "<tr>"; 
     echo "<td>" . $attrs['zid'][$i] . "</td>"; 
     echo "<td>" . $attrs['count'][$i] . "</td>"; 
     echo "</tr>"; 
    } 
    echo "</table>"; 
} 
+1

這並不聰明。 – 2010-04-01 18:03:49

+0

是的,我知道如何做到這一點在PHP中,只是無法找出聰明的方式... – TwixxyKit 2010-04-01 18:06:17

+0

啊,我很抱歉,我只是想我會拋出一個通用的解決方案 – 2010-04-01 18:12:11