如何在smarty中打印多维数组值?

时间:2013-04-16 03:20:20

标签: php smarty

我想在smarty模板中打印以下名为$all_class_subjects的数组:

Array
(
[4] => Array
        (
            [class_id] => 5
            [class_name] => V
            [class_order] => 0
            [class_subject_assign] => 0
            [class_added_date] => 1365837028
            [class_updated_date] => 1365837028
            [class_added_staff_id] => ff8d4a5ea6bf11dce105aa2fa7b959b8
            [class_updated_staff_id] => ff8d4a5ea6bf11dce105aa2fa7b959b8
            [sub_data] => Array
                (
                    [0] => Chemistry
                    [1] => Mathematics
                )

        )
)

我正在尝试打印数组的代码(并非所有元素只有class_name,以及sub_data数组中的主题名称):

{if $all_class_subjects}
         {foreach from=$all_class_subjects item=class_subject_data}
       <tr>
           <td width="20%">{$class_subject_data.class_name|capitalize}</td>
           <td width="40%">
            {foreach from=class_subject_data.sub_data item=subject key=subject_name}

            <b>{$subject.subject_name}</b>
              <br />
            {/foreach}

         {/foreach}     h

           </td>
</tr>

但是我无法打印sub_data数组的主题名称。所以请告诉我们如何打印这些主题名称。请帮我打印那些主题名称,以及我自己管理的其他内容。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可能有语法错误

{foreach from=class_subject_data.sub_data item=subject key=subject_name}

应该是($似乎在class_subject_data.sub_data上丢失了):

{foreach from=$class_subject_data.sub_data item=subject key=subject_name}

在foreach循环下失败,请使用{$subject|@print_r}查看您是否收到任何数据。在循环之前,查看您是否在多维数组{$class_subject_data.sub_data|@print_r}中获取了任何数据。

当您调试它并且一切看起来都有效时,要打印值,请使用以下命令。 from是数据数组,item是数组的valuekey是数组的键。希望这有帮助!

{foreach from=$class_subject_data.sub_data item=subject_name key=subject_key}
    The subject is: {$subject_name} and the Key is {$subject_key}

smarty中的变量由{$variable_name}定义。有关详细信息,请参阅the docs