PageRenderTime 51ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/documentation/de/designers/language-builtin-functions/language-function-foreach.xml

https://bitbucket.org/hallgrennetworks/smarty
XML | 235 lines | 206 code | 7 blank | 22 comment | 0 complexity | 6b8fe8f1b57cdaa114c1d06beba93cc4 MD5 | raw file
Possible License(s): LGPL-3.0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- $Revision: 2978 $ -->
  3. <!-- EN-Revision: 1.8 Maintainer: andreas Status: ready -->
  4. <sect1 id="language.function.foreach">
  5. <title>{foreach}, {foreachelse}</title>
  6. <para>
  7. Die <emphasis>foreach</emphasis> Schleife ist eine Alternative zu
  8. <link
  9. linkend="language.function.section"><emphasis>section</emphasis></link>.
  10. <emphasis>foreach</emphasis> wird verwendet, um ein assoziatives
  11. Array zu durchlaufen. Die Syntax von
  12. <emphasis>foreach</emphasis>-Schleifen ist viel einfacher als die
  13. von <emphasis>section</emphasis>. <emphasis>{foreach}</emphasis>
  14. Tags müssen mit <emphasis>{/foreach}</emphasis> tags kombiniert
  15. werden. Erforderliche Parameter sind: <emphasis>from</emphasis> und
  16. <emphasis>item</emphasis>. Der Name der {foreach}-Schleife kann
  17. frei vergeben werden und sowohl Buchstaben, Zahlen als auch
  18. Unterstriche enthalten. <emphasis>foreach</emphasis>-Schleifen
  19. können verschachtelt werden, dabei ist zu beachten, dass sich die
  20. definierten Namen voneinander unterscheiden. Die
  21. <emphasis>from</emphasis> Variable (normalerweise ein assoziatives
  22. Array) definiert die Anzahl der von <emphasis>foreach</emphasis> zu
  23. durchlaufenen Iterationen. <emphasis>foreachelse</emphasis> wird
  24. ausgeführt wenn keine Werte in der <emphasis>from</emphasis>
  25. Variable übergeben wurden.
  26. </para>
  27. <informaltable frame="all">
  28. <tgroup cols="5">
  29. <colspec colname="param" align="center" />
  30. <colspec colname="type" align="center" />
  31. <colspec colname="required" align="center" />
  32. <colspec colname="default" align="center" />
  33. <colspec colname="desc" />
  34. <thead>
  35. <row>
  36. <entry>Attribut Name</entry>
  37. <entry>Typ</entry>
  38. <entry>Erforderlich</entry>
  39. <entry>Standardwert</entry>
  40. <entry>Beschreibung</entry>
  41. </row>
  42. </thead>
  43. <tbody>
  44. <row>
  45. <entry>from</entry>
  46. <entry>string</entry>
  47. <entry>Ja</entry>
  48. <entry><emphasis>n/a</emphasis></entry>
  49. <entry>Name des zu durchlaufenden Array.</entry>
  50. </row>
  51. <row>
  52. <entry>item</entry>
  53. <entry>string</entry>
  54. <entry>Ja</entry>
  55. <entry><emphasis>n/a</emphasis></entry>
  56. <entry>Name für das aktuelle Element.</entry>
  57. </row>
  58. <row>
  59. <entry>key</entry>
  60. <entry>string</entry>
  61. <entry>Nein</entry>
  62. <entry><emphasis>n/a</emphasis></entry>
  63. <entry>Name für den aktuellen Schlüssel.</entry>
  64. </row>
  65. <row>
  66. <entry>name</entry>
  67. <entry>string</entry>
  68. <entry>Nein</entry>
  69. <entry><emphasis>n/a</emphasis></entry>
  70. <entry>Name der 'foreach'-Schleife, für die Abfrage der 'foreach'-Eigenschaften.</entry>
  71. </row>
  72. </tbody>
  73. </tgroup>
  74. </informaltable>
  75. <example>
  76. <title>{foreach} - item</title>
  77. <programlisting role="php">
  78. <![CDATA[
  79. <?php
  80. $arr = array( 1001,1002,1003);
  81. $smarty->assign('custid', $arr);
  82. ?>
  83. ]]>
  84. </programlisting>
  85. <programlisting>
  86. <![CDATA[
  87. <?php
  88. {* dieses Beispiel gibt alle Werte aus dem $KundenId Array aus *}
  89. {foreach from=$KundenId item=aktuelle_id}
  90. id: {$aktuelle_id}<br>
  91. {/foreach}
  92. ]]>
  93. </programlisting>
  94. <para>
  95. Das obige Beispiel erzeugt folgende Ausgabe:
  96. </para>
  97. <screen>
  98. <![CDATA[
  99. id: 1000<br>
  100. id: 1001<br>
  101. id: 1002<br>
  102. ]]>
  103. </screen>
  104. </example>
  105. <example>
  106. <title>{foreach} - item und key</title>
  107. <programlisting role="php">
  108. <![CDATA[
  109. // Der Schlüssel enthält den Schlüssel des jeweils iterierten Wertes
  110. // die Zuweisung sieht wie folgt aus:
  111. <?php
  112. $smarty->assign('kontakte', array(
  113. array('phone' => '1',
  114. 'fax' => '2',
  115. 'cell' => '3'),
  116. array('phone' => '555-4444',
  117. 'fax' => '555-3333',
  118. 'cell' => '760-1234')
  119. ));
  120. ?>
  121. ]]>
  122. </programlisting>
  123. <programlisting>
  124. <![CDATA[
  125. {foreach name=aussen item=kontakt from=$kontakte}
  126. <hr />
  127. {foreach key=schluessel item=wert from=$kontakt}
  128. {$schluessel}: {$wert}<br>
  129. {/foreach}
  130. {/foreach}
  131. </programlisting>
  132. <para>
  133. Das obige Beispiel erzeugt folgende Ausgabe:
  134. </para>
  135. <screen>
  136. <![CDATA[
  137. <hr />
  138. phone: 1<br>
  139. fax: 2<br>
  140. cell: 3<br>
  141. <hr />
  142. phone: 555-4444<br>
  143. fax: 555-3333<br>
  144. cell: 760-1234<br>
  145. ]]>
  146. </programlisting>
  147. </example>
  148. <example>
  149. <title>{foreach} - Beispiel mit Datenbankzugriff (z.B. PEAR oder ADODB)</title>
  150. <programlisting role="php">
  151. <![CDATA[
  152. <?php
  153. $sql = 'SELECT contact_id, name, nick FROM contacts ORDER BY contact';
  154. $smarty->assign('kontakte', $db->getAssoc($sql));
  155. ?>
  156. ]]>
  157. </programlisting>
  158. <programlisting>
  159. <![CDATA[
  160. {foreach key=cid item=con from=$kontakte}
  161. <a href="kontact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
  162. {/foreach}
  163. ]]>
  164. </programlisting>
  165. </example>
  166. <para>
  167. Foreach-Loops haben auch eigene Variablen welche die Foreach
  168. Eigenschaften enthalten. Diese werden wie folgt ausgewiesen:
  169. {$smarty.foreach.foreachname.varname}. foreachname ist der Name der
  170. als <emphasis>name</emphasis> Attribut von Foreach übergeben wurden.
  171. </para>
  172. <sect2 id="foreach.property.iteration">
  173. <title>iteration</title>
  174. <para>
  175. gibt die aktuelle iteration aus
  176. </para>
  177. <para>
  178. iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert.
  179. </para>
  180. </sect2>
  181. <sect2 id="foreach.property.first">
  182. <title>first</title>
  183. <para>
  184. <emphasis>first</emphasis> ist TRUE wenn die aktuelle Iteration die erste ist
  185. </para>
  186. </sect2>
  187. <sect2 id="foreach.property.last">
  188. <title>last</title>
  189. <para>
  190. <emphasis>last</emphasis> ist TRUE wenn die aktuelle Iteration die letzte ist
  191. </para>
  192. </sect2>
  193. <sect2 id="foreach.property.show">
  194. <title>show</title>
  195. <para>
  196. <emphasis>show</emphasis> wird als Parameter von foreach verwedet
  197. und ist ein boolscher Wert, TRUE oder FALSE. Auf FALSE wird nichts
  198. ausgegeben und wenn foreachelse gefunden wird, dieser angezeigt.
  199. </para>
  200. </sect2>
  201. <sect2 id="foreach.property.total">
  202. <title>total</title>
  203. <para>
  204. <emphasis>total</emphasis> gibt die Anzahl Iterationen des Foreach
  205. Loops aus und kann in- oder nach- Foreach Blöcken verwendet werden.
  206. </para>
  207. </sect2>
  208. </sect1>
  209. <!-- Keep this comment at the end of the file
  210. Local variables:
  211. mode: sgml
  212. sgml-omittag:t
  213. sgml-shorttag:t
  214. sgml-minimize-attributes:nil
  215. sgml-always-quote-attributes:t
  216. sgml-indent-step:1
  217. sgml-indent-data:t
  218. indent-tabs-mode:nil
  219. sgml-parent-document:nil
  220. sgml-default-dtd-file:"../../../../manual.ced"
  221. sgml-exposed-tags:nil
  222. sgml-local-catalogs:nil
  223. sgml-local-ecat-files:nil
  224. End:
  225. vim600: syn=xml fen fdm=syntax fdl=2 si
  226. vim: et tw=78 syn=sgml
  227. vi: ts=1 sw=1
  228. -->