functions.arguments.html 26.7 KB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Funktionsparameter</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="functions.user-defined.html">Vom Nutzer definierte Funktionen</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="functions.returning-values.html">R&uuml;ckgabewerte</a></div>
 <div class="up"><a href="language.functions.html">Funktionen</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="functions.arguments" class="sect1">
   <h2 class="title">Funktionsparameter</h2>

   <p class="simpara">
    Mit einer Parameterliste kann man Informationen an eine Funktion
    übergeben. Die Parameterliste ist eine durch Kommas getrennte
    Liste von Ausdrücken.
   </p>
   <p class="para">
    PHP unterstützt die Weitergabe von Parametern als Werte (das ist
    der Standard), als <a href="functions.arguments.html#functions.arguments.by-reference" class="link">Verweise</a> und
    als <a href="functions.arguments.html#functions.arguments.default" class="link">Vorgabewerte</a>.
    <a href="functions.arguments.html#functions.variable-arg-list" class="link">Eine variable Anzahl
    von Parametern</a> wird ebenfalls unterstützt, siehe auch die
    Funktionsreferenzen für
    <span class="function"><a href="function.func-num-args.html" class="function">func_num_args()</a></span>,
    <span class="function"><a href="function.func-get-arg.html" class="function">func_get_arg()</a></span> und
    <span class="function"><a href="function.func-get-args.html" class="function">func_get_args()</a></span> für weitere Informationen.
   </p>

   <p class="para">
    <div class="example" id="example-113">
     <p><strong>Beispiel #1 Arrays an Funktionen übergeben</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">rechne_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$eingabe</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$eingabe</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]</span><span style="color: #DD0000">&nbsp;+&nbsp;</span><span style="color: #0000BB">$eingabe</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]</span><span style="color: #DD0000">&nbsp;=&nbsp;"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$eingabe</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]+</span><span style="color: #0000BB">$eingabe</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br />}<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
     </div>

    </div>
   </p>

   <div class="sect2" id="functions.arguments.by-reference">
    <h3 class="title">Verweise als Parameter übergeben</h3>

    <p class="simpara">
     Normalerweise werden den Funktionen Werte als Parameter
     übermittelt. Wenn man den Wert dieses Parameters innerhalb der
     Funktion ändert, bleibt der Parameter außerhalb der Funktion
     unverändert. Wollen Sie aber erreichen, dass die Änderung auch außerhalb
     der Funktion sichtbar wird, müssen Sie die Parameter als Verweise
     (Referenzen) übergeben.
    </p>

    <p class="para">
     Wenn eine Funktion einen Parameter generell als Verweis behandeln
     soll, setzt man in der Funktionsdefinition ein kaufmännisches Und
     (&amp;) vor den Parameternamen:
    </p>

    <p class="para">
     <div class="example" id="example-114">
      <p><strong>Beispiel #2 Übergeben von Funktionsparametern als Verweis</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">fuege_etwas_anderes_an&nbsp;</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$string</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$string&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #DD0000">'und&nbsp;nun&nbsp;zu&nbsp;etwas&nbsp;anderem.'</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">$str&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'Dies&nbsp;ist&nbsp;ein&nbsp;String,&nbsp;'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">fuege_etwas_anderes_an&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$str</span><span style="color: #007700">;&nbsp;</span><span style="color: #FF8000">//&nbsp;Ausgabe:&nbsp;'Dies&nbsp;ist&nbsp;ein&nbsp;String,&nbsp;und&nbsp;nun&nbsp;zu&nbsp;etwas&nbsp;anderem.'<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
      </div>

     </div>
    </p>

   </div>

   <div class="sect2" id="functions.arguments.default">
    <h3 class="title">Vorgabewerte für Parameter</h3>

    <p class="para">
     Eine Funktion kann C++-artige Vorgabewerte für skalare Parameter
     wie folgt definieren:
    </p>

    <p class="para">
     <div class="example" id="example-115">
      <p><strong>Beispiel #3 Einsatz von Vorgabeparametern</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">machkaffee&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$typ&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"Cappucino"</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">"Ich&nbsp;mache&nbsp;eine&nbsp;Tasse&nbsp;</span><span style="color: #0000BB">$typ</span><span style="color: #DD0000">.\n"</span><span style="color: #007700">;<br />}<br />echo&nbsp;</span><span style="color: #0000BB">machkaffee&nbsp;</span><span style="color: #007700">();<br />echo&nbsp;</span><span style="color: #0000BB">machkaffee&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">machkaffee&nbsp;</span><span style="color: #007700">(</span><span style="color: #DD0000">"Espresso"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
      </div>

     </div>
    </p>

    <p class="para">
     Die Ausgabe von diesem kleinen Skript ist:
    </p>
    <p class="para">
     <div class="example-contents screen"><br />
Ich mache eine Tasse Cappucino.<br />
Ich mache eine Tasse.<br />
Ich mache eine Tasse Espresso.<br />
     </div>
    </p>
    <p class="para">
     PHP gestattet es, Arrays und den speziellen Typ <strong><code>NULL</code></strong> als
     Vorgabewert zu nutzen, zum Beispiel:
    </p>
    <p class="para">
     <div class="example" id="example-116">
      <p><strong>Beispiel #4 Nichtskalare Typen als Vorgabewert</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">makecoffee&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$types&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"cappuccino"</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">$coffeeMaker&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$device&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">is_null</span><span style="color: #007700">(</span><span style="color: #0000BB">$coffeeMaker</span><span style="color: #007700">)&nbsp;?&nbsp;</span><span style="color: #DD0000">"hands"&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">$coffeeMaker</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">"Ich&nbsp;mache&nbsp;eine&nbsp;Tasse&nbsp;"</span><span style="color: #007700">.</span><span style="color: #0000BB">join</span><span style="color: #007700">(</span><span style="color: #DD0000">",&nbsp;"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$types</span><span style="color: #007700">).</span><span style="color: #DD0000">"&nbsp;mit&nbsp;</span><span style="color: #0000BB">$device</span><span style="color: #DD0000">.\n"</span><span style="color: #007700">;<br />}<br />echo&nbsp;</span><span style="color: #0000BB">makecoffee&nbsp;</span><span style="color: #007700">();<br />echo&nbsp;</span><span style="color: #0000BB">makecoffee&nbsp;</span><span style="color: #007700">(array(</span><span style="color: #DD0000">"cappuccino"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"lavazza"</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">"teapot"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
      </div>

     </div>
    </p>

    <p class="simpara">
     Der Vorgabewert muss ein konstanter Ausdruck sein, darf also zum
     Beispiel keine Variable, Eigenschaft einer Klasse oder ein
     Funktionsaufruf sein.
    </p>
    <p class="para">
     Bitte beachten Sie, dass alle Parameter mit Vorgabewert rechts von den
     Parametern ohne Vorgabewert stehen müssen - sonst wird es nicht
     funktionieren. Betrachten Sie folgendes Beispiel:
    </p>

    <p class="para">
     <div class="example" id="example-117">
      <p><strong>Beispiel #5 Ungültige Anwendung von Vorgabewerten</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">mach_joghurt&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$typ&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"rechtsdrehendes"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$geschmack</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">"Mache&nbsp;einen&nbsp;Becher&nbsp;</span><span style="color: #0000BB">$typ</span><span style="color: #DD0000">&nbsp;</span><span style="color: #0000BB">$geschmack</span><span style="color: #DD0000">-joghurt.\n"</span><span style="color: #007700">;<br />}<br /><br />echo&nbsp;</span><span style="color: #0000BB">mach_joghurt&nbsp;</span><span style="color: #007700">(</span><span style="color: #DD0000">"Brombeer"</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;arbeitet&nbsp;nicht&nbsp;wie&nbsp;erwartet<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
      </div>

     </div>
    </p>

    <p class="para">
     Die Ausgabe dieses Beispiels ist:
    </p>

    <p class="para">
     <div class="example-contents screen"><br />
Warning: Missing argument 2 in call to mach_joghurt() in<br />
/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41<br />
Mache einen Becher Brombeer-joghurt.<br />
     </div>
    </p>

    <p class="para">
     Nun vergleichen Sie bitte oberes Beispiel mit folgendem:
    </p>

    <p class="para">
     <div class="example" id="example-118">
     <p><strong>Beispiel #6 Richtiger Einsatz von Vorgabewerten</strong></p>
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">mach_joghurt&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$geschmack</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$typ&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"rechtsdrehendes"</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">"Mache&nbsp;einen&nbsp;Becher&nbsp;</span><span style="color: #0000BB">$typ</span><span style="color: #DD0000">&nbsp;</span><span style="color: #0000BB">$geschmack</span><span style="color: #DD0000">-Joghurt.\n"</span><span style="color: #007700">;<br />}<br /><br />echo&nbsp;</span><span style="color: #0000BB">mach_joghurt&nbsp;</span><span style="color: #007700">(</span><span style="color: #DD0000">"Brombeer"</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;arbeitet&nbsp;wie&nbsp;erwartet.<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
      </div>

     </div>
    </p>

    <p class="para">
     ... und jetzt ist die Ausgabe:
    </p>

    <p class="para">
     <div class="example-contents screen"><br />
Mache einen Becher rechtsdrehendes Brombeer-Joghurt.<br />
     </div>
    </p>

    <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
     <span class="simpara">
      Das Setzen von Standardwerten für Argumente, die als Referenz
      übergeben werden (&quot;passed by reference&quot;) wird seit PHP 5
      unterstützt.
     </span>
    </p></blockquote>

   </div>

   <div class="sect2" id="functions.variable-arg-list">
    <h3 class="title">Variable Anzahl von Parametern</h3>

    <p class="simpara">
     PHP unterstützt eine variable Anzahl an Parametern für benutzerdefinierte
     Funktionen. Dies wird seit PHP 5.6 durch das Token <em>...</em>
     umgesetzt. Für ältere Versionen von PHP stehen die Funktionen 
     <span class="function"><a href="function.func-num-args.html" class="function">func_num_args()</a></span>, <span class="function"><a href="function.func-get-arg.html" class="function">func_get_arg()</a></span>, und
     <span class="function"><a href="function.func-get-args.html" class="function">func_get_args()</a></span> bereit.
    </p>

    <div class="sect3" id="functions.variable-arg-list.new">
     <h4 class="title"><em>...</em> in PHP 5.6+</h4>

     <p class="para">
      Ab PHP 5.6 kann eine Liste von Parametern das Token <em>...</em>
      enthalten um anzugeben, dass die Funktion eine variable Anzahl von
      Paramtern akzeptiert. Die zusätzlichen Werte werden als array übergeben.
      Zum Beispiel:
      <div class="example" id="example-119">
       <p><strong>Beispiel #7 Verwendung von <em>...</em> für den Zugriff auf
       variable Parameter</strong></p>
       <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">sum</span><span style="color: #007700">(...</span><span style="color: #0000BB">$numbers</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$acc&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$numbers&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$n</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$acc&nbsp;</span><span style="color: #007700">+=&nbsp;</span><span style="color: #0000BB">$n</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$acc</span><span style="color: #007700">;<br />}<br /><br />echo&nbsp;</span><span style="color: #0000BB">sum</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
       </div>

       <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:</p></div>
       <div class="example-contents screen">
<div class="cdata"><pre>
10
</pre></div>
       </div>
      </div>
     </p>

     <p class="para">
      Das Token <em>...</em> kann ebenfalls dazu verwendet werden, um
      ein <span class="type"><a href="language.types.array.html" class="type array">array</a></span> oder <a href="class.traversable.html" class="classname">Traversable</a> Objekt als
      Liste von Parametern zu übergeben:
      <div class="example" id="example-120">
       <p><strong>Beispiel #8 Verwendung von <em>...</em> zur Übergabe einer Parameterliste</strong></p>
       <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">add</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$b</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$b</span><span style="color: #007700">;<br />}<br /><br />echo&nbsp;</span><span style="color: #0000BB">add</span><span style="color: #007700">(...[</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">]).</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;[</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">];<br />echo&nbsp;</span><span style="color: #0000BB">add</span><span style="color: #007700">(...</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
       </div>

       <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:</p></div>
       <div class="example-contents screen">
<div class="cdata"><pre>
3
3
</pre></div>
       </div>
      </div>
     </p>

     <p class="para">
      Die Definition von regulären, positionierten Parametern vor dem <em>...</em>
      ist natürlich weiterhin möglich. In einem solchen Fall werden dann nur die
      zusätzlichen Werte, die zu keinem positionierten Parameter gehören, in
      das durch <em>...</em> erzeugte array übernommen.
     </p>

     <p class="para">
      Es ist zudem ebenfalls möglich dem <em>...</em> Token eine
      <a href="language.oop5.typehinting.html" class="link">Typangabe</a> voran zu
      stellen. Ist dies der Fall, müssen alle Werte, die für <em>...</em>
      relevant sind, vom entsprechenden Typ sein.
      
      <div class="example" id="example-121">
       <p><strong>Beispiel #9 Variable Paramter mit Vorgabe des Typs</strong></p>
       <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">total_intervals</span><span style="color: #007700">(</span><span style="color: #0000BB">$unit</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">DateInterval&nbsp;</span><span style="color: #007700">...</span><span style="color: #0000BB">$intervals</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$time&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$intervals&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$interval</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$time&nbsp;</span><span style="color: #007700">+=&nbsp;</span><span style="color: #0000BB">$interval</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$unit</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$time</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">DateInterval</span><span style="color: #007700">(</span><span style="color: #DD0000">'P1D'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$b&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">DateInterval</span><span style="color: #007700">(</span><span style="color: #DD0000">'P2D'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">total_intervals</span><span style="color: #007700">(</span><span style="color: #DD0000">'d'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$b</span><span style="color: #007700">).</span><span style="color: #DD0000">'&nbsp;days'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;Dieser&nbsp;Aufruf&nbsp;wird&nbsp;scheitern,&nbsp;da&nbsp;null&nbsp;keine&nbsp;Instanz&nbsp;von&nbsp;DateInterval&nbsp;ist<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">total_intervals</span><span style="color: #007700">(</span><span style="color: #DD0000">'d'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
       </div>

       <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:</p></div>
       <div class="example-contents screen">
<div class="cdata"><pre>
3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
</pre></div>
       </div>
      </div>
     </p>

     <p class="para">
      Durch ein voran gestelltes <em>&amp;</em> ist auch die Übergabe
      <a href="functions.arguments.html#functions.arguments.by-reference" class="link">als Referenz</a>
      möglich.
     </p>
    </div>

    <div class="sect3" id="functions.variable-arg-list.old">
     <h4 class="title">Ältere Versionen von PHP</h4>

     <p class="para">
      Eine spezielle Syntax ist zur Definition von variablen Paramtern nicht
      notwendig. Um auf die übergebenen Werte zugreifen zu können, stehen
      die Funktionen <span class="function"><a href="function.func-num-args.html" class="function">func_num_args()</a></span>,
      <span class="function"><a href="function.func-get-arg.html" class="function">func_get_arg()</a></span> und <span class="function"><a href="function.func-get-args.html" class="function">func_get_args()</a></span>
      bereit.
     </p>

     <p class="para">
      Das erste Beispiel von weiter oben würde in PHP 5.5 und früher so
      umgesetzt werden können:
      
      <div class="example" id="example-122">
       <p><strong>Beispiel #10 Zugriff auf variable Parameter in PHP 5.5 und früher</strong></p>
       <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">sum</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$acc&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">func_get_args</span><span style="color: #007700">()&nbsp;as&nbsp;</span><span style="color: #0000BB">$n</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$acc&nbsp;</span><span style="color: #007700">+=&nbsp;</span><span style="color: #0000BB">$n</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$acc</span><span style="color: #007700">;<br />}<br /><br />echo&nbsp;</span><span style="color: #0000BB">sum</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
       </div>

       <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:</p></div>
       <div class="example-contents screen">
<div class="cdata"><pre>
10
</pre></div>
       </div>
      </div>
     </p>
    </div>

   </div>

  </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="functions.user-defined.html">Vom Nutzer definierte Funktionen</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="functions.returning-values.html">R&uuml;ckgabewerte</a></div>
 <div class="up"><a href="language.functions.html">Funktionen</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>