{foreach}, {foreachelse}
Die foreach Schleife ist eine Alternative zu
section.
foreach wird verwendet, um ein assoziatives
Array zu durchlaufen. Die Syntax von
foreach-Schleifen ist viel einfacher als die
von section. {foreach}
Tags müssen mit {/foreach} tags kombiniert
werden. Erforderliche Parameter sind: from und
item. Der Name der {foreach}-Schleife kann
frei vergeben werden und sowohl Buchstaben, Zahlen als auch
Unterstriche enthalten. foreach-Schleifen
können verschachtelt werden, dabei ist zu beachten, dass sich die
definierten Namen voneinander unterscheiden. Die
from Variable (normalerweise ein assoziatives
Array) definiert die Anzahl der von foreach zu
durchlaufenen Iterationen. foreachelse wird
ausgeführt wenn keine Werte in der from
Variable übergeben wurden.
Beispiel 7-5. {foreach} - item
<?php $arr = array( 1001,1002,1003); $smarty->assign('custid', $arr); ?>
|
<?php
{* dieses Beispiel gibt alle Werte aus dem $KundenId Array aus *}
{foreach from=$KundenId item=aktuelle_id}
id: {$aktuelle_id}<br>
{/foreach} |
Das obige Beispiel erzeugt folgende Ausgabe:
id: 1000<br>
id: 1001<br>
id: 1002<br> |
|
Beispiel 7-6. {foreach} - item und key
// Der Schlüssel enthält den Schlüssel des jeweils iterierten Wertes // die Zuweisung sieht wie folgt aus: <?php $smarty->assign('kontakte', array( array('phone' => '1', 'fax' => '2', 'cell' => '3'), array('phone' => '555-4444', 'fax' => '555-3333', 'cell' => '760-1234') )); ?>
|
{foreach name=aussen item=kontakt from=$kontakte}
<hr />
{foreach key=schluessel item=wert from=$kontakt}
{$schluessel}: {$wert}<br>
{/foreach}
{/foreach}
</programlisting>
<para>
Das obige Beispiel erzeugt folgende Ausgabe:
</para>
<screen>
<![CDATA[
<hr />
phone: 1<br>
fax: 2<br>
cell: 3<br>
<hr />
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234<br> |
|
Beispiel 7-7. {foreach} - Beispiel mit Datenbankzugriff (z.B. PEAR oder ADODB)
<?php $sql = 'SELECT contact_id, name, nick FROM contacts ORDER BY contact'; $smarty->assign('kontakte', $db->getAssoc($sql)); ?>
|
{foreach key=cid item=con from=$kontakte}
<a href="kontact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
{/foreach} |
|
Foreach-Loops haben auch eigene Variablen welche die Foreach
Eigenschaften enthalten. Diese werden wie folgt ausgewiesen:
{$smarty.foreach.foreachname.varname}. foreachname ist der Name der
als name Attribut von Foreach übergeben wurden.
iteration
gibt die aktuelle iteration aus
iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert.
first
first ist TRUE wenn die aktuelle Iteration die erste ist
last
last ist TRUE wenn die aktuelle Iteration die letzte ist
show
show wird als Parameter von foreach verwedet
und ist ein boolscher Wert, TRUE oder FALSE. Auf FALSE wird nichts
ausgegeben und wenn foreachelse gefunden wird, dieser angezeigt.
total
total gibt die Anzahl Iterationen des Foreach
Loops aus und kann in- oder nach- Foreach Blöcken verwendet werden.