SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=141&group=26
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Variable Argumentlisten


In PHP3 konnten noch keine variablen Argumentlisten verwendet werden. Um diesen Nachteil zu umgehen, wurden Arrays eingesetzt. Sie können die Anzahl der Argumente dann mithilfe von Array-Funktionen bestimmen.

Beispiel

<?php
function formatieren($tag,$argumente) {
  $anzahlargs = count($argumente);
  for ($i = 0; $i < $anzahlargs; $i++) {
    $resultat .= "<".$tag.">".$argumente[$i]."</".$tag.">";
  }
  return $resultat;
}
$personen = array("Matthias","Caroline","Gülten");
// Ausgabe – Kursiv
echo formatieren ("i",$personen) . "<br>";
// Ausgabe – Unterstrichen
echo formatieren ("u",$personen);
?>

Ausgabe
MatthiasCarolineGülten
MatthiasCarolineGülten

Wie man sieht, besteht der Trick darin, array zu verwenden. Die Anzahl der Argumente kann leicht mit der Funktion count ermittelt werden. Für die Übergabe wird das Array mit der Funktion array aus Einzelwerten erzeugt. Wie viele dies sind, spielt nun keine Rolle mehr.

Seit PHP 4 sind variable Argumentlisten zulässig. Dies wird bei internen Funktionen wie beispielsweise max verwendet. Die Funktion ermittelt den maximalen Wert einer beliebig langen Liste von Argumenten.

Es gibt spezielle Funktionen, mit denen der Parameterblock untersucht werden kann:

Beispiele

<?php
function meinefunk() {
  $anzahlargs = func_num_args();
  echo "Anzahl der Argumente: $anzahlargs";
}
// Ausgabe – Anzahl der Parameter (3)
meinefunk (10, 20, 30);
?>


<?php
function meinefunk() {
  $anzahlargs = func_num_args();
  echo "Anzahl der Argumente: $anzahlargs<br>";
  if ($anzahlargs >= 2) {
    echo "Das 2. Argument ist: " . func_get_arg (1);
  }
}
// Ausgabe
// Anzahl der Argumente: 3
// Das 2. Argument ist: 20
meinefunk (10, 20, 30);
?>


<?php
function meinefunk() {
  $anzahlargs = func_num_args();
  $arg_liste = func_get_args();
  for ($i = 0; $i < $anzahlargs; $i++) {
    echo "Argument $i ist: " . $arg_liste[$i] . "<br>";
  }
}
// Ausgabe
// Argument 0 ist: 10
// Argument 1 ist: 20
// Argument 2 ist: 30
meinefunk (10, 20, 30);
?>