php smarty loop multidimensional array

14,252
{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}

Should do it I think.

Share:
14,252
TwixxyKit
Author by

TwixxyKit

Updated on June 29, 2022

Comments

  • TwixxyKit
    TwixxyKit almost 2 years

    I'm using smarty for my site, and I'm trying to loop through an array to print out table rows...

    The array looks like this:

    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
                    )
    
            )
    )
    

    I'm trying to loop through this and print out tables:

    <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>
    

    I tried nested foreach statements and played with sections, but I can't figure out how to loop through it correctly...

  • TwixxyKit
    TwixxyKit about 14 years
    Sadly, no... I get this: syntax error: unrecognized tag: $table.count[$k]
  • anomareh
    anomareh about 14 years
    @Knock What version of Smarty are you using?
  • anomareh
    anomareh about 14 years
    @Knock yeah just realized. Forgot you only need the backticks if you're embedding a var in quotes. No prob.
  • Andrew Moore
    Andrew Moore about 14 years
    Note that if you are using Smarty3, you can simply use {foreach $array as $table}