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