2015-07-23 4 views
0

У меня есть массив:Динамический массив со строкой ключа

Array 
(
[CS] => Array 
    (
     [Zomblerz] => 1.80 
     [Quintic] => 2.06 
     [Mostly Harmless] => 2.21 
     [Nexus eSports] => 1.70 
     [WinOut.net] => 2.73 
     [Ace Gaming] => 1.48 
     [Luminosity Gaming] => 3.68 
     [Natus Vincere] => 1.30 
    ) 

[LoL] => Array 
    (
     [Jin Air Green Wings] => 1.17 
     [Incredible Miracle] => 5.40 
     [Rebels Anarchy] => 1.27 
     [SBENU Sonicboom] => 3.92 
     [SK Telecom T1] => 1.19 
     [CJ Entus] => 4.95 
     [KOO Tigers] => 1.38 
     [NaJin e-mFire] => 3.15 
    ) 

[StarCraft] => Array 
    (
     [Maru] => 1.48 
     [Zest] => 2.73 
     [Stats] => 1.90 
     [ByuL] => 1.94 
    ) 
) 

Я хочу показать мой массив в Smarty с {} раздел, но у меня есть индекс строки ключей и косяк сделать это. Я пробовал {foreach}, но результат слишком плохой.

{section name=i loop=$odds} 
<table> 
    <th> here i want game name... </th> 
    {section name=j loop=$odds[i]} 
    <tr> 
    <td> here team name - here team number </td> 
    ... 
    </tr> 
    {/section} 
</table> 
{/section} 

Может у меня помочь?

P.S. извините за мой английский (

+0

array_values ​​(); удалит строковые ключи – ArtisticPhoenix

+0

, почему вы хотите использовать '{section}', когда doc конкретно говорит ['A {section} - для циклизации по последовательно индексированным массивам данных, в отличие от {foreach}, который используется для циклического перехода по одному ассоциативный массив. »(http://www.smarty.net/docsv2/en/language.function.section.tpl) - http://www.smarty.net/docsv2/en/language.function.section.tpl – Sean

+0

@ArtisiticPhoenix 'array_values ​​()' вызовет проблему для OP, где они хотят сделать ' здесь, я хочу название игры ...', который выглядит как строковые ключи. – Sean

ответ

0

Может быть лучший способ получить то, что вы хотите в smarty. Но если вам нужен только массив с числовыми клавишами, вы можете использовать array_values(); в массиве он будет переиндексировать ключи,

http://php.net/manual/en/function.array-values.php

0

{section} для цикла по сравнению с численно-индексированные массивы только.

{foreach} используется для петли над ассоциативного массива

Ваш желаемый результат демонстрируется в Example 7.8. {foreach} with nested item and key - http://www.smarty.net/docsv2/en/language.function.foreach.tpl#id2802172

Ваш код будет выглядеть примерно так -

{foreach key=game item=odd from=$odds} 
    <table> 
    <th>{$game}</th> 
    {foreach key=team item=teamnumber from=$odd} 
    <tr> 
     <td>{$team}: {$teamnumber}</td> 
    </tr> 
    {/foreach} 
    </table> 
{/foreach} 

редактировать

за ваш комментарий, если вы хотите измените расположение таблицы, используя

{if $smarty.foreach.teams.index % 2 == 0}...{/if} 

вы могли бы сделать что-то вроде -

{foreach key=game item=odd from=$odds} 
    <table> 
    <th>{$game}</th> 
    <tr> 
    {foreach name=teams key=team item=teamnumber from=$odd} 
    {if $smarty.foreach.teams.index % 2 == 0} 
    </tr> 
    <tr> 
    {/if} 
     <td>{$team}</td> 
     <td>{$teamnumber}</td> 
    {/foreach} 
    </tr> 
    </table> 
{/foreach} 

см http://www.smarty.net/docsv2/en/language.function.foreach.tpl#foreach.property.index

+0

Большое спасибо.Но если я хочу разместить две команды и два числа в строке, как это:

game1
team1 odd1 team2 odd2
team3 odd3 team4 odd4
, может сделать это? – SET

+0

, если это ваш желаемый результат, почему вы не поместили это в свой первоначальный вопрос? – Sean

+0

Я новичок в Smarty, просто изучая все случаи) thx за помощью снова, начните читать инструкцию) – SET

Смежные вопросы