0

命名的数组$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。任何人都可以帮助我获得所需的输出。提前致谢。

4

4 回答 4

0

试试这个:删除 smarty 中的 foreach

{assign var='key_val' value='chapter_id'}
{$chapter_theory_details.$key_val}

参考:http ://www.smarty.net/forums/viewtopic.php?t=10112

于 2013-05-22T09:46:04.117 回答
0

您正在迭代循环中的chapter_theory_details项目{foreach}。如果你想得到 just 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),您只得到了项目的第一个字符。

于 2013-05-22T09:41:52.810 回答
0

$chapter_theory拥有 1 个项目(数组),无需 foreach 即可访问。

要获取您需要使用的 chapter_id$chapter_theory_details.chapter_id

还有一种更漂亮的方式来使用 foreach 就像在 PHP 中一样

 {foreach $arr as $k=>$v}

更多关于http://www.smarty.net/docs/en/language.function.foreach.tpl

于 2013-05-22T09:48:10.343 回答
0

如果您只想要chapter_datasmarty 中的值,请使用:

{$chapter_theory_details.chapter_data}

你不需要foreach循环!

于 2013-05-22T10:00:00.080 回答