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

时间:2015-08-09 05:48:55

标签: php multidimensional-array foreach smarty smarty3

我已经搜索过,但似乎找不到解决问题的方法。

我试图从数组中仅拉出2个元素: $menu.contents.text$menu.contents.url

如果您还没猜到,数组var就是菜单。我运行代码时This is what I get

这是我目前使用的代码:

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

这是我试图从中获取的数组:

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
}

有人看到我做错了吗?

1 个答案:

答案 0 :(得分:1)

我认为第一个foreach不在正确的地方。试试这个:

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