вложенные массивы, как правильно его использовать, используя smarty (loop in loop)

Я не могу понять, как зациклить мой массив в Smarty, я прочитал документы, но по какой-то причине я просто могу сделать это правильно.

У меня есть массив в массиве. первый — это «категория», а в категории есть массивы с данными.

Теперь я хочу показать все названия категорий со всеми находящимися в нем элементами, используя smarty. Мой массив выглядит так:

Array
(
[catAddons] => Array
(
[0] => Array
(
[id] => 25
[name] => this is a addon group name
[group_categoryid] => 295
[group_description] =>
[group_optiontype] => single
[group_sort] => 0
[addons] => Array
(
[0] => Array
(
[addon_id] => 47
[addon_group_id] => 25
[addon_name] => bla
[addon_priceoption] => paid
[addon_purchaseprice] => 1.00
[addon_price] => 2.00
[addon_sort] => 0
)

[1] => Array
(
[addon_id] => 48
[addon_group_id] => 25
[addon_name] => nbalba
[addon_priceoption] => free
[addon_purchaseprice] => 0.00
[addon_price] => 0.00
[addon_sort] => 0
)

)

)

)

и я делаю это:

{foreach from=$catAddons.0 key=k item=i}
{$k} : {$i}
{if $k eq 'addons'}
{foreach from=$i.addons item=v}
{$v}
{/foreach}
{/if}
{/foreach}

первые $ & $ i показывает данные группы «категория», так что это работает. но теперь я хочу зациклить содержимое [addons], но второй цикл ничего не показывает. И когда я удаляю оператор if, он показывает Warning: Illegal string offset 'addons' in...
Как я могу это сделать ?

// РЕДАКТИРОВАНИЕ ОБНОВЛЕННОЙ ЦИКЛ

{foreach from=$catAddons key=k item=i} <!-- ?? loop -->
{$k} : {$i}
{foreach from=$i key=k item=i} <!-- Group loop -->
{$k} {$i}
{/foreach}
{/foreach}

этот показывает данные всех групп .. но затем показывает аддоны как Addons: Array … но я не знаю, как это зациклить в цикле

1

Решение

Чтобы перебрать ассоциативные массивы в Smarty, используйте следующий синтаксис:

{foreach from=$assoc_arr key=k item=i}
{$k} : {$i}
{/foreach}

Чтобы перебрать численно индексированные (неассоциативные) массивы, используйте следующее:

{foreach from=$num_arr item=i}
{$i}
{/foreach}

Так что если у вас есть набор числовых и ассоциативных массивов, вам придется погрузиться в них соответственно:

{foreach from=$catAddons item=x}                 <!-- numerically-indexed array -->
{foreach from=$x key=k item=i}               <!-- associative array -->
<p>key: {$k} => item: {$i}</p>
{if $k eq 'addons'}                      <!-- access a nested array -->
{foreach from=$i item=ix}            <!-- numerically-indexed array -->
{foreach from=$ix key=k2 item=v} <!-- associative array -->
<p>k2: {$k2} => value: {$v}</p>
{/foreach}
{/foreach}
{/if}
{/foreach}
{/foreach}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]