Angenommen, Sie durch $ foo laufen, das ist ein Array mit den Index und Iterationsoptionen
{foreach from=$foo item=bar name=humbug}
{$smarty.foreach.humbug.index}
{$smarty.foreach.humbug.iteration}
{/foreach}
Die erste Spalte sind die Index-Ergebnisse sind in der zweiten Spalte die Iterationsergebnisse
0 - 1
1 - 2
2 - 3
3 - 4
4 - 5
Dies bedeutet, Index beginnt bei 0 als Array-Index, wobei als Iteration die Schleife Iteration zählt, die bei 1 beginnt.
Eine Instanz, bei der die Verwendung des falschen Werts zu Problemen führen würde, besteht darin, etwas in Zeilen von 4 oder einer anderen Menge in einer Tabelle anzuzeigen.
Mit Index würde eine schlecht angelegte Tabelle verursachen. Sie würden eine sofortige Zeilenänderung bei der ersten Iteration der Schleife (Index 0) erhalten, die sich bei der 5. Iteration (Index 4) korrigiert, aber nur innerhalb des Bereichs des aktuellen Layouts, was bedeutet, dass Ihre erste Zeile nur 1 Zelle enthält es. jede andere Zeile hätte 4 Zellen und die Daten in jeder Zelle nach der ersten Zeile würden später in den Zellen der Tabelle 4 erscheinen, als dies der Fall sein sollte.
{if $smarty.foreach.humbug.index is div by 4}
</tr><tr>
{/if}
Verwendung Iteration würde eigentlich den Reihenwechsel auslegen gibt gleiche Reihen von 4 bis zur letzten Iteration oder die foreach Schleife.
{if $smarty.foreach.humbug.iteration is div by 4}
</tr><tr>
{/if}
Nach der foreach-Schleife fügen Sie einfach eine Tabellenzeile hinzu, um die letzte Zeile zu vervollständigen.
Ich hoffe, dass dies jemand hilft.
Aber da Sie bekommen 'index' von der foreach-Schleife, Du meinst, es ist nur um 1 tatsächlich? – mario
@mario Ja, das ist was ich will. – alex
Sie können auch '{counter start = 1}' anstelle des Indexes verwenden. – mario