名为$chapter_theory_details
的数组如下:
Array
(
[cs_class_id] => 2
[cs_subject_id] => 8
[chapter_id] => 103
[chapter_cs_map_id] => 81
[chapter_title] => Chemistry
[chapter_data] => Everything related to literature
)
我已使用以下说明将此数组分配给smarty模板:
$smarty->assign('chapter_theory_details', $chapter_theory_details);
现在我只想访问数组键值['chapter_data']
。为此,我在smarty中编写了以下代码片段,但无法获得所需的结果:
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td align="center">
{if $chapter_theory_details}
Chapter's Theory
</td>
</tr>
<tr>
<td align="center" valign="top">
{foreach from=$chapter_theory_details item=chapter_theory}
<a href="#" onClick="get_chapter_theory_by_chapter({$chapter_theory.chapter_id}); return false;">{$chapter_theory.chapter_data}</a>
{/foreach}</a>
</td>
</tr>
{/if}
</table>
我没有获得所需的输出,即与文学相关的所有内容,而是获得输出2 8 1 8 C E
。任何人都可以帮助我获得我需要的所需输出。在此先感谢。
答案 0 :(得分:0)
您正在迭代chapter_theory_details
周期中{foreach}
的项目。如果您只想获得chapter_id
,则无需迭代数组,只需使用{$chapter_theory_details.chapter_id}
并移除{foreach}
:
<td align="center" valign="top">
<a href="#" onClick="get_chapter_theory_by_chapter({$chapter_theory_details.chapter_id}); return false;">{$chapter_theory_details.chapter_data}</a>
</td>
您在代码中获得的结果是由以下原因引起的:当您在chapter_theory_details
中迭代foreach
时,变量$chapter_theory
包含数组的值(2
,8
,103
,81
,'Chemistry'
,'Everything related to literature'
)尽管它具有误导性的名称。当您将这些简单值作为数组访问时(使用$chapter_theory.chapter_id
),您只获得了项目的第一个字符。
答案 1 :(得分:0)
试试这个:在smarty中删除foreach
{assign var='key_val' value='chapter_id'}
{$chapter_theory_details.$key_val}
答案 2 :(得分:0)
你有$chapter_theory
有1个项目(数组),可以在没有foreach的情况下访问。
要获取chapter_id,您需要使用$chapter_theory_details.chapter_id
还有一种更好的方法可以像PHP一样使用foreach
{foreach $arr as $k=>$v}
更多关于http://www.smarty.net/docs/en/language.function.foreach.tpl
答案 3 :(得分:0)
如果您只想要smarty中的chapter_data
值,请使用:
{$chapter_theory_details.chapter_data}
您不需要foreach
循环!