Первый раз; первый массив имеет идентификаторы 2 и 1, сопоставленные соответственно типу и зоне. Ваш первый умный foreach будет циклически проходить через этот массив и тип продукта и зону в качестве значений переменной $ fld_name.
Второй foreach, однако, выполняется без какого-либо отношения к первому; поэтому обе итерации этого массива будут одинаковыми.
Мне кажется, у меня похожая ситуация в одном из моих шаблонов Smarty; но так как я на работе, я не могу на них взглянуть: (.
В любом случае; Я считаю, что я создал либо объект, либо массив с именами в качестве индексов; так что в вашем случае параметры для Type будут во втором массиве под индексом «Type», то же самое для Zone.
Таким образом, вы можете перейти через вторую часть массива, которая принадлежит данному ключу:
{foreach $field_names as $field_name}
...
{foreach $field_values[$field_name] as $field_value}
...
{/foreach}
{/foreach}
Ваш второй массив изменится с «0» и «1» в качестве индексов для массивов значений, на «Тип» и «Зона». Такая конструкция должна уметь работать.
Пример приведенного выше кодовой панели см. http://codepad.org/kzfaYuSd. Я полагаю, что в некоторой степени то же самое, что вы пытаетесь выполнить с массивами. Это все еще означает изменение массивов; но в противном случае вы, вероятно, будете использовать много логики в шаблоне smarty, что делает их нечитаемыми. К сожалению, кодовая панель не имеет смысла; но я знаю, что smarty может делать то же самое с утверждениями foreach:).
Вторичный подход заключается в создании объекта для поля, состоящего из имени поля и значений поля в качестве свойств:
$items = new array();
$item1 = new StdObject();
$item1->field_name = "Type";
$item1->field_values = new array("Value1", "Value2");
$items[] = $item1;
А затем в smarty (при условии, что $ items сопоставлен с $ items):
{foreach $items as $item}
$item->field_name
{foreach $item->field_values as $value}
$value
{/foreach}
{/foreach}
(конечно, включая ваш собственный код вокруг этих значений:)).
Кодовая панель, иллюстрирующая последнее: http://codepad.org/flIhRlmO
Удачи!