编程语言
首页 > 编程语言> > PHP-在Smarty中引用数组

PHP-在Smarty中引用数组

作者:互联网

我正在尝试通过我调用的函数引用数组

$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),它将显示该字段下db中的所有内容.我想在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}

编辑

这是有效的代码

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

感谢您为我提供正确解决方案的帮助:)

解决方法:

由于您正在访问数组的第一个元素,因此请使用键[0]:

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

其实我不确定那行得通.如果不是,请尝试使用以下语法.

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

编辑
您是否应该在foreach中检查Type?

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

标签:smarty,mysql,php
来源: https://codeday.me/bug/20191208/2090005.html