Помогите вывести многомерный массив в smarty

Тема в разделе "Другие языки", создана пользователем verfaa, 29 мар 2012.

Модераторы: Цукер
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    Есть массив вида:
    Код:
    Array
    (
        [comment] => Array
            (
                [55] => Join our Site for free
                [56] => Search all over the site, visit Clubs and Events!!!
            )
     
        [status] => Array
            (
                [55] => 1
                [56] => 1
            )
     
        [sorter] => Array
            (
                [55] => 1
                [56] => 2
            )
     
        [file_type] => Array
            (
                [55] => p
                [56] => p
            )
     
        [file_path] => Array
            (
                [55] => /uploades/3.jpg
                [56] => /uploades/4.gif
            )
     
    )
    
    пробую:
    Код:
    {foreach from=$data key=myId item=i}
     
    {$myId} ---> {$i}  <br /><br /><br />
     
    {/foreach}
    
    выводит -
    HTML:
    
    comment ---> Array
     
     
    status ---> Array
     
     
    sorter ---> Array
     
     
    file_type ---> Array
     
     
    file_path ---> Array
    
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Ну, правильно, этож массив пробуй так

    PHP:
    {foreach from=$data key=myId item=i_arr}
     
    {foreach 
    from=$i_arr item=i}
    {
    $myId} ---> {$i}  <br /><br /><br />
      {/foreach}
     
     
    {/foreach}
     
    verfaa нравится это.
  3. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    И столкнулся с ещё одной проблемой, есть 2 массива - $site_tour и $site_tour_header, в $site_tour хранится абзац с текстом, в $site_tour_header заголовок к этому абзацу, мне нужно вывести эти массывы в теге <section>, причем в тэг <label> подставив заголовок, в тег <p> абзац с текстом. Написал такой код:

    Код:
    <section class="ac-container">
    {foreach from=$site_tour item=i_arr name=foo}
    {foreach from=$site_tour_header item=i_header name=fooheader}
    <div>
                        <input id="ac-{$smarty.foreach.foo.iteration}" name="accordion-1" type="radio" {if $smarty.foreach.foo.first}checked{/if} />
                        <label for="ac-{$smarty.foreach.foo.iteration}">{$i_header}</label>
                        <article class="ac-small">
                            <p>{$i_arr}</p>
                        </article>
    </div>
    {/foreach}
    {/foreach}
    </section>
    
    Он выводит мой код несколько раз подряд. Можно ли решить задачу, чтобы из двух разных массивов выводить данные в одну область кода в нормальном виде, чтобы при этом код не копировался многократно?
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    хм, как я понял у тебя в $site_tour массив и заголовками типо Заголовок1, Заголовок2, Заголовок3..
    а в $site_tour_header Описание для Заголовок1 , Описание для Заголовок2, Описание для Заголовок3...
    да?
    если да то пробуй так

    Код:
     <section class="ac-container">
    {foreach from=$site_tour item=i_arr name=foo key=tour_i}
     
    <div>
                        <input id="ac-{$smarty.foreach.foo.iteration}" name="accordion-1" type="radio" {if $smarty.foreach.foo.first}checked{/if} />
                        <label for="ac-{$smarty.foreach.foo.iteration}">{$site_tour_header[$tour_i]}</label>
                        <article class="ac-small">
                            <p>{$i_arr}</p>
                        </article>
    </div>
     
    {/foreach}
    </section>
     
    verfaa нравится это.