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 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line