duanguai2781 2015-08-09 05:48
浏览 72
已采纳

smarty v3在foreach中显示嵌套数组元素

I have searched but can't seem to find a working solution to my problem.

I am trying to pull only 2 elements from an array: $menu.contents.text and $menu.contents.url

The arrays var is Menu if you haven't yet guessed. This is what I get when I run my code.

This is the code I use at the moment:

<form name='jump'>
<select name='menu' onChange='location=document.jump.menu.options[document.jump.menu.selectedIndex].value;' size='1' value='GO'>
{foreach from=$menu item=result}
    {if $result.contents}
        {foreach from=$result.contents item=mc}
            <option value="{$mc.url}">{$mc.text}</option>
        {/foreach}
    {/if}
{/foreach}
</select>
</form>

This is the array I am trying to grab it from:

array(24)
{ 
["id"]=> string(2) "91" 
["title"]=> string(11) "Quick Links" 
["name"]=> string(11) "yellowpages" 
["contents"]=> array(1)
{ 
    [0]=> array(5) 
    { 
        [97]=> array(13) 
        { 
            ["id"]=> string(2) "97" 
            ["menu_id"]=> string(2) "91" 
            ["parent_id"]=> string(1) "0" 
            ["el_id"]=> string(7) "81_6b3a" 
            ["page_name"]=> string(10) "new_ypages" 
            ["level"]=> string(1) "0" 
            ["nofollow"]=> string(1) "0" 
            ["new_window"]=> string(1) "0" 
            ["action"]=> string(4) "read" 
            ["custom_url"]=> string(0) "" 
            ["active"]=> bool(false) 
            ["text"]=> string(13) "New Companies" 
            ["url"]=> string(51) "dealers/new_companies/" 
        }

        [98]=> array(13) 
        { 
            ["id"]=> string(2) "98" 
            ["menu_id"]=> string(2) "91" 
            ["parent_id"]=> string(1) "0" 
            ["el_id"]=> string(7) "82_cae6" 
            ["page_name"]=> string(10) "top_ypages" 
            ["level"]=> string(1) "0" 
            ["nofollow"]=> string(1) "0" 
            ["new_window"]=> string(1) "0" 
            ["action"]=> string(4) "read" 
            ["custom_url"]=> string(0) "" 
            ["active"]=> bool(false) 
            ["text"]=> string(13) "Top Companies" 
            ["url"]=> string(51) "dealers/top_companies/" 
        }
    }
}
["order"]=> string(1) "1"
["position"]=> string(4) "left"
["type"]=> string(4) "menu"
["extras"]=> string(11) "yellowpages"
["status"]=> string(6) "active"
["header"]=> string(1) "0"
["collapsible"]=> string(1) "1"
["collapsed"]=> string(1) "0"
["sticky"]=> string(1) "0"
["rss"]=> string(0) ""
["multilingual"]=> string(1) "0"
["lang"]=> string(2) "en"
["tpl"]=> string(15) "render-menu.tpl"
["external"]=> string(1) "0"
["filename"]=> NULL
["removable"]=> string(1) "0"
["subpages"]=> string(0) ""
["classname"]=> string(0) ""
["display"]=> bool(true)
["hidden"]=> int(0) 0
}

Does anyone see what I am doing wrong?

  • 写回答

1条回答 默认 最新

  • dongle0396 2015-08-09 06:07
    关注

    I think the first foreach is not in the right place. Try this:

    {if !empty($menu.contents)}
      {foreach from=$menu.contents item=contentsItem} {* Loop through the contents array *}
        {foreach from=$contentsItem item=mc}
          <option value="{$mc.url}">{$mc.text}</option>
        {/foreach}
      {/foreach}
    {/if}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?