So nimmt eine PHP-Funktion eine variable Anzahl von Werten an

Sie brauchen eine flexible Funktion, der Sie ohne den Umweg über ein Array

beliebig viele Parameter übergeben können? Dann helfen die beiden Funkti-

onen func_num_args() und func_get_args(). Die binden Sie einfach in die

Funktion ein. Ein Beispiel:

<?php

function showthreads(){

  $args = func_num_args();

  if ($args == 0){

    trigger_error('Keine Argumente', E_USER_ERROR);

  }

  $arrArgs = func_get_args();

  foreach($arrArgs as $arg){

    echo 'Thread '.$arg.":n";

    // Hier Thread ermitteln und anzeigen

  }

}

showthreads(10, 20, 25, 22, 111, 9);

?>

Sind Argumente vorhanden, wird das von func_get_args() erzeugte Array $arrArgs durchgearbeitet und ausgegeben. Werden keine Argumente übergeben, erzeugt die Funktion einen Fehler.

Mehrere Werte zurückliefern

Manchmal genügt ein einziger Wert als Ergebnis eines Funktionsaufrufes nicht. Viele Programmierer lösen das Problem dann so, dass sie Ergebnisparameter einsetzen, also per Referenz übergebene Variable in den Funktionsaufruf übernehmen, so dass sie durch die Funktion verändert werden können. Das ist zwar praktikabel, kann aber zu recht umfangreichen Funktionsdeklarationen führen, wenn viele Parameter übergeben werden sollen.

Eine Alternative dazu ist die Rückgabe eines Arrays. Zum Beispiel:

 

<?php

function gps_position() {

  $x = …;

  $y = …;

return (array($x,$y));

}

?>

 

 

Das Programm, das diese Funktion aufruft, muss das Ergebnis Element für Element an lokale Variablen zuweisen. Viel praktischer ist die Verwendung eines des Statements list, das das Ergebnis-Array an mehrere Variablen übergibt:

 

list ($myX,$myY) = gps_position();

 

Noch klarer – aber auch ein wenig länger – wird das Beispiel durch den Einsatz assoziativer Arrays, mit denen man jedem Element einen Namen gibt:

 

<php

function gps_position() {

  $x = 123;

  $y = 456;

return (array("x"=>$x,"y"=>$y));

}

$pos = gps_position();

$myX = $pos['x'];

$myY = $pos['y'];

?>

Ähnliche Beiträge