многомерный массив php цикла smarty - PullRequest
3 голосов
/ 01 апреля 2010

Я использую 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 и поиграл с секциями, но не могу понять, как правильно его пройти ...

Ответы [ 2 ]

6 голосов
/ 01 апреля 2010
{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 голосов
/ 01 апреля 2010
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>";
}
...