<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.control-structures.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'control-structures.for.php',
    1 => 'for',
    2 => 'for',
  ),
  'up' => 
  array (
    0 => 'language.control-structures.php',
    1 => 'Kontrollstrukturen',
  ),
  'prev' => 
  array (
    0 => 'control-structures.do.while.php',
    1 => 'do-while',
  ),
  'next' => 
  array (
    0 => 'control-structures.foreach.php',
    1 => 'foreach',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/control-structures/for.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="control-structures.for" class="sect1">
 <h2 class="title">for</h2>
 <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p>
 <p class="para">
  <code class="literal">for</code>-Schleifen sind die komplexesten Schleifen in PHP.
  Sie verhalten sich wie ihre Pendants in C. Die Syntax einer
  <code class="literal">for</code>-Schleife ist:
  <div class="informalexample">
   <div class="example-contents">
<div class="cdata"><pre>
for (expr1; expr2; expr3)
    statement
</pre></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  Der erste Ausdruck (<var class="varname">expr1</var>) wird vor Ausführung der
  Schleife ausgeführt.
 </p>
 <p class="simpara">
  Am Anfang jedes Schleifendurchlaufs wird die Anweisung <var class="varname">expr2</var>
  ausgeführt. Wenn diese wahr ist (<strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>), wird die Schleife fortgesetzt
  und die untergeordneten Anweisungen werden ausgeführt.
  Andernfalls (<strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>) endet die Ausführung der Schleife.
 </p>
 <p class="simpara">
  Am Ende jedes Schleifendurchlaufs wird die Anweisung <var class="varname">expr3</var>
  ausgeführt.
 </p>
 <p class="simpara">
  Jede der Anweisungen kann leer sein oder mehrere durch Kommata getrennte
  Anweisungen enthalten. In letzterem Fall werden bei <var class="varname">expr2</var>
  zwar alle Anweisungen ausgeführt aber das Ergebnis wird nur von der letzten
  Anweisung verwendet.
  Wenn <var class="varname">expr2</var> leer ist, läuft die Schleife unendlich
  lange (PHP nimmt dies als <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, ebenso wie C). Dies ist nicht so sinnlos,
  wie es scheint, denn oft will man die Schleife manuell mit <a href="control-structures.break.php" class="link"><code class="literal">break</code></a>
  beenden.
 </p>
 <p class="para">
  Die folgenden Beispiele geben alle die Zahlen 1 bis 10 aus:
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Beispiel 1 */<br /><br /></span><span style="color: #007700">for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">&lt;= </span><span style="color: #0000BB">10</span><span style="color: #007700">; </span><span style="color: #0000BB">$i</span><span style="color: #007700">++) {<br />    echo </span><span style="color: #0000BB">$i</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">/* Beispiel 2 */<br /><br /></span><span style="color: #007700">for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">; ; </span><span style="color: #0000BB">$i</span><span style="color: #007700">++) {<br />    if (</span><span style="color: #0000BB">$i </span><span style="color: #007700">&gt; </span><span style="color: #0000BB">10</span><span style="color: #007700">) {<br />        break;<br />    }<br />    echo </span><span style="color: #0000BB">$i</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">/* Beispiel 3 */<br /><br /></span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />for (; ; ) {<br />    if (</span><span style="color: #0000BB">$i </span><span style="color: #007700">&gt; </span><span style="color: #0000BB">10</span><span style="color: #007700">) {<br />        break;<br />    }<br />    echo </span><span style="color: #0000BB">$i</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$i</span><span style="color: #007700">++;<br />}<br /><br /></span><span style="color: #FF8000">/* Beispiel 4 */<br /><br /></span><span style="color: #007700">for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">$j </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">&lt;= </span><span style="color: #0000BB">10</span><span style="color: #007700">; </span><span style="color: #0000BB">$j </span><span style="color: #007700">+= </span><span style="color: #0000BB">$i</span><span style="color: #007700">, print </span><span style="color: #0000BB">$i</span><span style="color: #007700">, </span><span style="color: #0000BB">$i</span><span style="color: #007700">++);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  Sicher ist das erste das hübscheste (vielleicht auch das vierte), aber
  in manchen Fällen sind leere Anweisungen in <code class="literal">for</code>-Schleifen
  durchaus praktisch.
 </p>
 <p class="para">
  PHP unterstützt bei <code class="literal">for</code>-Schleifen ebenfalls die alternative
  &quot;Doppelpunkt-Syntax&quot;:
  <div class="informalexample">
   <div class="example-contents">
<div class="cdata"><pre>
for (expr1; expr2; expr3):
    statement
    ...
endfor;
</pre></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  Es ist üblich, dass Arrays wie in dem folgenden Beispiel durchlaufen
  werden.
 </p>
 <p class="para">
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/*<br /> * Dies ist ein Array mit Daten, die wir in der<br /> * Schleife verändern wollen.<br /> */<br /></span><span style="color: #0000BB">$personen </span><span style="color: #007700">= array(<br />    array(</span><span style="color: #DD0000">'name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Hans'</span><span style="color: #007700">, </span><span style="color: #DD0000">'salt' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">856412</span><span style="color: #007700">),<br />    array(</span><span style="color: #DD0000">'name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Martin'</span><span style="color: #007700">, </span><span style="color: #DD0000">'salt' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">215863</span><span style="color: #007700">)<br />);<br /><br />for(</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$personen</span><span style="color: #007700">); ++</span><span style="color: #0000BB">$i</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$personen</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">][</span><span style="color: #DD0000">'salt'</span><span style="color: #007700">] = </span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">000000</span><span style="color: #007700">, </span><span style="color: #0000BB">999999</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  Der obige Code kann langsam sein, weil die Größe des Arrays bei jedem
  Schleifendurchlauf abgerufen wird. Da sich die Größe nie ändern, kann die
  Schleife optimiert werden, indem man die Größe in einer Variablen
  zwischenspeichert, anstatt sie immer wieder mit <span class="function"><a href="function.count.php" class="function">count()</a></span>
  abzurufen:
 </p>
 <p class="para">
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$personen </span><span style="color: #007700">= array(<br />    array(</span><span style="color: #DD0000">'name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Hans'</span><span style="color: #007700">, </span><span style="color: #DD0000">'salt' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">856412</span><span style="color: #007700">),<br />    array(</span><span style="color: #DD0000">'name' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'Martin'</span><span style="color: #007700">, </span><span style="color: #DD0000">'salt' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">215863</span><span style="color: #007700">)<br />);<br /><br />for(</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$groesse </span><span style="color: #007700">= </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$personen</span><span style="color: #007700">); </span><span style="color: #0000BB">$i </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">$groesse</span><span style="color: #007700">; ++</span><span style="color: #0000BB">$i</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$personen</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">][</span><span style="color: #DD0000">'salt'</span><span style="color: #007700">] = </span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">000000</span><span style="color: #007700">, </span><span style="color: #0000BB">999999</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
</div><?php manual_footer($setup); ?>