Ссылка на массив в smarty - PullRequest
3 голосов
/ 24 июня 2011

Я пытаюсь ссылаться на массив через функцию, которую я вызываю

$bio['results'] = $db->query(sprintf('SELECT * FROM `athlete_bio_results` WHERE `PersonID` = %d ORDER BY `athlete_bio_results`.`Type` DESC, `athlete_bio_results`.`Date` DESC;', $id));

    $smarty->assign(value($params, 'to', 'athlete'), $bio);

На мой взгляд, через цикл foreach я ссылаюсь на некоторые поля этого массива.

Как бы я ссылался на поле вне цикла foreach для проверки ... Например, в цикле foreach я могу перейти к {$ result.Type), который вызовет все в БД под этим полем. Я хочу проверить определенный тип перед циклом foreach. Моя проблема заключается в обращении к этой части данных вне цикла foreach. Как бы я этого достиг? Спасибо!

{if $athlete.results['Type'] == 'National'} <---- This is not working for me.
    {foreach $athlete.results as $result}
        {$result.Date|substr:0:-6} 
        {$result.Event} - 
        {$result.Result}
            {if $result.Junior == 'no' || $result.Junior == ''}
            {else}
                {'(Jr. Div.)'}
            {/if}
        <br />
    {/foreach}
{/if}

EDIT

Это код, который работает

{foreach $athlete.results as $result}
    {if $result['Type'] == 'National'}
        {$result.Date|substr:0:-6} 
        {$result.Event} - 
        {$result.Result}
            {if $result.Junior == 'no' || $result.Junior == ''}
            {else}
                {'(Jr. Div.)'}
            {/if}
    <br />
    {/if}
{/foreach}  

Спасибо за вашу помощь в поиске правильного решения :)

1 Ответ

3 голосов
/ 24 июня 2011

Поскольку вы обращаетесь к первому элементу массива, используйте ключ [0]:

{if $athlete.results[0]['Type'] == 'National'}

На самом деле я не уверен, что это сработает. Если это не так, попробуйте этот синтаксис.

{if $athlete.results[0].Type == 'National'}

EDIT Если вы проверяете тип внутри foreach?

{foreach $athlete.results as $result}
  {* Check inside the loop... *}
  {if $result['Type'] == 'National'}
    {$result.Date|substr:0:-6} 
    {$result.Event} - 
    {$result.Result}
        {if $result.Junior == 'no' || $result.Junior == ''}
        {else}
            {'(Jr. Div.)'}
        {/if}
    <br />
  {/if}
{/foreach}
...