我正在尝试通过我正在调用的函数来引用一个数组
$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}
编辑
这是有效的代码
{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}
关于php - smarty 中的引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6472915/