我在PHP文件中有以下名为$cs_map_data
的多维数组,我已将其分配给smarty模板:
Array
(
[2] => Array
(
[class_id] => 2
[class_name] => II
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 81
[subject_name] => 11 Engllish
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
[3] => Array
(
[class_id] => 3
[class_name] => III
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 155
[subject_name] => Hidi
[subject_checked] => 0
[teacher_cs_id] =>
)
[1] => Array
(
[cs_map_id] => 156
[subject_name] => 11 Maths
[subject_checked] => 0
[teacher_cs_id] =>
)
[2] => Array
(
[cs_map_id] => 157
[subject_name] => 11 Science
[subject_checked] => 0
[teacher_cs_id] =>
)
[3] => Array
(
[cs_map_id] => 158
[subject_name] => 11 Engllish
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
[4] => Array
(
[class_id] => 4
[class_name] => IV
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 86
[subject_name] => Physics
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
[6] => Array
(
[class_id] => 6
[class_name] => VI
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 144
[subject_name] => Mathematics
[subject_checked] => 0
[teacher_cs_id] =>
)
[1] => Array
(
[cs_map_id] => 145
[subject_name] => dfadadadsagfasrsarasrarBiology
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
[7] => Array
(
[class_id] => 7
[class_name] => VII
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 129
[subject_name] => Physics
[subject_checked] => 0
[teacher_cs_id] =>
)
[1] => Array
(
[cs_map_id] => 130
[subject_name] => Chemistry11
[subject_checked] => 0
[teacher_cs_id] =>
)
[2] => Array
(
[cs_map_id] => 131
[subject_name] => 11 Science
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
[8] => Array
(
[class_id] => 8
[class_name] => VIII
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 67
[subject_name] => Hidi
[subject_checked] => 0
[teacher_cs_id] =>
)
[1] => Array
(
[cs_map_id] => 68
[subject_name] => 11 Engllish
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
[9] => Array
(
[class_id] => 9
[class_name] => IX
[class_checked] => 0
[class_subjects] => Array
(
[0] => Array
(
[cs_map_id] => 87
[subject_name] => Mathematics
[subject_checked] => 0
[teacher_cs_id] =>
)
[1] => Array
(
[cs_map_id] => 88
[subject_name] => Hidi
[subject_checked] => 0
[teacher_cs_id] =>
)
[2] => Array
(
[cs_map_id] => 89
[subject_name] => 11 Science
[subject_checked] => 0
[teacher_cs_id] =>
)
)
)
)
现在我想访问smarty模板中每个元素的key [cs_map_id]和[subject_name]
的值。我尝试使用foreach但无法从密钥[cs_map_id]
和[subject_name]
获取值。
任何人都可以帮助我如何在smarty中的foreach循环中访问键[cs_map_id]
和[subject_name]
的值。
我在smarty模板中编写的代码如下:
<table>
<tr>
{assign var='i' value=0}
{if $cs_map_data}
{foreach from=$cs_map_data item="map_data"}
{if $i%4 == 0}</tr><tr>{/if}
<td align="left" valign="top" width="150">
<input type="checkbox" name="cs_map_id[]" id="{$map_data.cs_map_id}" value="{$map_data.cs_map_id}" onChange="get_test_by_category('{$map_data.cs_map_id}'); return false;" />
{$map_data.subject_name}
</td>
{assign var='i' value=$i+1}
{/foreach}
{else}
<td>
<i>No Subject is assigned to the class.</i>
</td>
{/if}
</tr>
</table>
任何人都可以帮助我如何在smarty模板中使用forech中的键值吗? 提前致谢。
答案 0 :(得分:3)
这将在Smarty 2和3中有效。{foreach}在版本之间发生了很大变化,但{section}的工作方式相同。
{section name=map loop=$cs_map_data}
<tr>
<td>{$cs_map_data[map].class_name}</td> //this is the format to access your data from the array
{section name=subject loop=$cs_map_data[map].class_subjects}
<td>
{$cs_map_data[map].class_subjects[subject].subject_name} //this is how to access the entries of your 'inner' array
</td>
{/section} //end your nested section
</tr>
{/section} //end your outer section
这应该可以循环播放你的数组...
部分的智能手册:http://www.smarty.net/docsv2/en/language.function.section.tpl
祝你好运!