2013-05-07 86 views
1

我有一个名为$cs_map_data在PHP文件以下多维数组,我已经将其分配到Smarty模板:如何从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] => 
         ) 

       ) 

     ) 

) 

现在我要访问键[cs_map_id]的价值和[subject_name]每个元素的在聪明的模板。我尝试使用foreach,但无法获得密钥[cs_map_id][subject_name]的值。 任何人都可以帮助我如何访问smarty中foreach循环中的密钥[cs_map_id][subject_name]的值。本人在智者的模板写 代码如下:

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

任何一个可以帮助我如何在forech在智者模板中使用两个关键的价值观? 在此先感谢。

+0

你在使用Smarty 2还是3? – eidsonator 2013-05-07 14:23:59

+0

@eidsonator Smarty 2 – PHPLover 2013-05-07 14:27:24

+0

啊,这就是我从你的foreach语法中想到的。我对3更加熟悉......并且在2和3之间的这个区域有一些大的变化。但是我认为你想用一个{SECTION}而不是一个foreach,并且你必须将它们嵌套到遍历“内部”数组。 – eidsonator 2013-05-07 14:31:32

回答

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 

应通过你的阵列的工作循环......

的部分Smarty的手册:http://www.smarty.net/docsv2/en/language.function.section.tpl

祝你好运!

+0

非常感谢。你的代码为我做了必要的魔术。再次感谢你挽救我的生命。 – PHPLover 2013-05-07 15:13:54

+1

当我第一次开始学习聪明的时候,花了两天时间来解决这个问题!这很复杂,但是当你将头部缠绕在头上时,它非常简单。祝你的项目好运! – eidsonator 2013-05-07 15:17:36