У меня есть многомерный массив, который я отправляю в шаблон, где я использую smarty.
Массив выглядит так:
array (size=2)
'gender' =>
array (size=2)
0 => string 'male' (length=4)
1 => string 'female' (length=6)
'states' =>
array (size=11)
0 => string 'Ciudad Autonoma de Buenos Aires' (length=31)
1 => string 'Buenos Aires' (length=12)
2 => string 'Catamarca' (length=9)
3 => string 'Chaco' (length=5)
4 => string 'Chubut' (length=6)
5 => string 'Cordoba' (length=7)
6 => string 'Corrientes' (length=10)
7 => string 'Entre Rios' (length=10)
8 => string 'Formosa' (length=7)
9 => string 'Jujuy' (length=5)
10 => string 'La Pampa' (length=8)
чего я хочу добиться, так это: я могу показать только 4 или меньше элементов из каждого массива в зависимости от того, сколько элементов у него есть. Например, для подмассива «пол» я показываю как мужской, так и женский пол. Но для подмассива «состояния» мне нужно показать только первые 4 элемента, а затем добавить легенду со ссылкой «показать больше».
Это пока то, что я закодировал:
{if $ns eq 'states'}
<dt>Provincia</dt>
{assign var="n" value="0"}
{counter start=0 print=false assign=n}
{foreach from=$r key=k item=v}
{counter print=false}
{if counter lt 3}
<dd>{$v}</dd>
{elseif counter eq 3}
<dd>Ver más<dd>
{/if}
{/foreach}
n = {$n}
{/if}
Это не дает мне результатов, которые я хочу. Я не знаю, как «скрыть» элементы, когда их больше 4. Я мог выполнить итерацию только 4 раза, но в таком случае как мне манипулировать подмассивом, если у меня нет foreach?
Вывод должен выглядеть так:
Gender
Male
Female
States
Ciudad Autonoma de Buenos Aires
Buenos Aires
Catamarca
Chaco
See More>>