svn: /phpdoc/de/trunk/language/control-structures/ for.xml
[email protected] (Raphael Michel)
| Newsgroups | php.doc.de |
|---|---|
| Message-ID | <[email protected]> |
raphaelm Fri, 04 Jun 2010 21:22:27 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=300189
Log:
initial translation
Changed paths:
A phpdoc/de/trunk/language/control-structures/for.xml
Added: phpdoc/de/trunk/language/control-structures/for.xml
===================================================================
--- phpdoc/de/trunk/language/control-structures/for.xml (rev 0)
+++ phpdoc/de/trunk/language/control-structures/for.xml 2010-06-04 21:22:27 UTC (rev 300189)
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision: 288721 $ -->
+
+<sect1 xml:id="control-structures.for" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title><literal>for</literal></title>
+ <para>
+ <literal>for</literal>-Schleifen sind die komplexesten Schleifen in PHP.
+ Sie verhalten sich wie ihre Pendante in C. Die Syntax einer
+ <literal>for</literal>-Schleife ist:
+ <informalexample>
+ <programlisting>
+<![CDATA[
+for (expr1; expr2; expr3)
+ statement
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Der erste Ausdruck (<varname>expr1</varname>) wird vor Ausführung der
+ Schleife ausgeführt.
+ </simpara>
+ <simpara>
+ Am Anfang jedes Schleifendurchlaufs wird die Anweisung <varname>expr2</varname>
+ ausgeführt. Wenn <varname>expr2</varname> wahr ist (&true;), wird die
+ Schleife fortgesetzt und die untergeordneten Anweisungen werden ausgeführt.
+ Andernfalls (&false;) endet die Ausführung der Schleife.
+ </simpara>
+ <simpara>
+ Am Ende jedes Schleifendurchlaufs wird die Anweisung <varname>expr3</varname>
+ ausgeführt.
+ </simpara>
+ <simpara>
+ Jede der Anweisungen kann leer sein oder mehrere durch Kommata getrennte
+ Anweisungen enthalten. In letzterem Fall werden bei <varname>expr2</varname>
+ zwar alle Anweisungen ausgeführt aber das Ergebnis wird nur von der letzten
+ Anweisung verwendet.
+ Wenn <varname>expr2</varname> leer ist, läuft die Schleife unendlich
+ lange (PHP nimmt dies als &true;, ebenso wie C). Dies ist nicht so sinnlos,
+ wie es scheint, denn oft will man die Schleife manuell mit <link
+ linkend="control-structures.break"><literal>break</literal></link>
+ beenden.
+ </simpara>
+ <para>
+ Die folgenden Beispiele geben alle die Zahlen 1 bis 10 aus:
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+/* Beispiel 1 */
+
+for ($i = 1; $i <= 10; $i++) {
+ echo $i;
+}
+
+/* Beispiel 2 */
+
+for ($i = 1; ; $i++) {
+ if ($i > 10) {
+ break;
+ }
+ echo $i;
+}
+
+/* Beispiel 3 */
+
+$i = 1;
+for (; ; ) {
+ if ($i > 10) {
+ break;
+ }
+ echo $i;
+ $i++;
+}
+
+/* Beispiel 4 */
+
+for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Sicher ist das erste das hübscheste (vielleicht auch das vierte), aber
+ in manchen Fällen sind leere Anweisungen in <literal>for</literal>-Schleifen
+ durchaus praktisch.
+ </simpara>
+ <para>
+ PHP untersützt bei <literal>for</literal>-Schleifen ebenfalls die alternative
+ "Doppelpunkt-Syntax":
+ <informalexample>
+ <programlisting>
+<![CDATA[
+for (expr1; expr2; expr3):
+ statement
+ ...
+endfor;
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Es ist üblich, dass Arrays wie in dem folgenden Beispiel durchlaufen
+ werden.
+ </simpara>
+ <para>
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+/*
+* Dies ist ein Array mit Daten, die wir in der
+* Schleife verändern wollen.
+*/
+$personen = Array(
+ Array('name' => 'Hans', 'salt' => 856412),
+ Array('name' => 'Martin', 'salt' => 215863)
+ );
+
+for($i = 0; $i < sizeof($personen); ++$i)
+{
+ $personen[$i]['salt'] = rand(000000, 999999);
+}
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Das Problem liegt in der zweiten Anweisung: Dieses Programmbeispiel
+ kann sehr langsam sein, weil die Größe des Arrays bei jedem Schleifendurchlauf
+ berechnet wird. Da sich die Größe nie ändert, kann das Programm
+ optimiert werden, indem man die Größe in eine Variable speichert und diese
+ anstelle von sizeof nutzt, wie im folgenden Beispiel:
+ </simpara>
+ <para>
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$personen = Array(
+ Array('name' => 'Hans', 'salt' => 856412),
+ Array('name' => 'Martin', 'salt' => 215863)
+ );
+
+for($i = 0, $groesse = sizeof($personen); $i < $size; ++$i)
+{
+ $personen[$i]['salt'] = rand(000000, 999999);
+}
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+</sect1>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
Property changes on: phpdoc/de/trunk/language/control-structures/for.xml
___________________________________________________________________
Added: svn:executable
+ *