Frage zu optionalen Funktionsparametern

firstlord18

Erfahrenes Mitglied
Hallo,

ich habe eine Frage zu im Topic genanntem Thema.

Und zwar, man soll die optionalen Parameter ja immer hinten hionschreiben, leuchtet mir auch ein:

PHP:
function foo($par1, $par2, $par3 = '')
{
  //...
}

foo(1,2); // <-- PHP weiß, was gemeint ist
foo(1,2,3) // <-- ebenfalls

Aber wie sieht es nun damit aus:

PHP:
 function foo($par1, $par2, $par3 = '', $par4 = '')
 {
   //...
 }
 
 foo(1,2); // <-- PHP weiß, was gemeint ist
 foo(1,2,3) // <-- woher weiß PHP, welchen Parameter ich meine?

Danke im voraus!
 
PHP geht immer der Reihe nach.
PHP:
function foo($par1, $par2, $par3 = '', $par4 = '')
 {
   //...
 }
 
 foo(1,2); // <-- PHP weiß, was gemeint ist
 foo(1,2,3) // <-- PHP nimmt 3 für $par3
 foo(1,2,'',3) // <-- PHP nimmt 3 für $par4
 
Man könnte natürlich mit einem Typenraster in der Funktion die Variablen auch trennen (String, Integer usw.)
Kommt aber drauf an wofür du die Funktion brauchst.
Das solltes du am besten mal hier schreiben.

Wenn ich nich mehr so viel Schulstress hab guck ich mir das gerne an ;)
 
hehe danke für dein Angebot, aber ich brauche diese Fkt nicht, war nur ne allgemeine Frage :)


so,

@fanste: wenn ich 4 paramteer übergebe, so wie du in deinem Bsp, dann ist es mir ja klar,
aber was würde bei meinem Bsp passieren, dass ich ganz oben angeführt habe...?

Wie würde man das folgende machen, wenn man für par4 was übergeben will:

PHP:
function foo($par1, $par2, $par3 = '', $par4 = '') 
 { 
   //... 
 } 
  
 foo(1,2,'',3) // <-- PHP nimmt 3 für $par4

^
|
Das war ja das Bsp von fanste. Aber ads ist doch nicht sauber, doer? Da dann für par3 '' übergeben wird.

Angenommen meine Fkt würdfe aber für par3 einen Standartwert so festlegen:

PHP:
function foo($par1, $par2, $par3 = time(), $par4 = '') 
 { 
   //... 
 }

wie könnte ich nun $par4 übergeben, ohne par3 angeben zu müssen? Das geht wohl nicht oder?

Sowas ginge wohl nicht, doer?:
PHP:
foo(1,2, ,4);


</font></font>
 
Moin,

sollte es nicht möglich sein, die Parameter vernünftig nach Relevanz von links nach rechts anzuordnen, würde ich ein Parameter-Hash übergeben.

PHP:
function bla( &$Param)
{
  foreach( $Param as $CurrKey => $CurrValue)
  {
    echo $CurrKey . " => " . $CurrValue . "<br>/n";
  }
}

$ParameterArray = array( "deinparameter1" => 123, 
                                      "deinparameter2" => 321, 
                                      "deinparameter4" => 675, 
                                      "deinparameter9" => 1478963);
bla( $ParameterArray);


Viel Spaß.
 
Naa das mit solchen Funktionsübergaben hat schon seinen Sinn. Beispielsweise will der User nix übergeben oder festen Wert bestimmen dann möchte man eventuell sagen okay dann nehmen wir nen Default Wert

Wenn $bar3 oder $bar4 nun keine Parameter übergeben werden sind sie dennoch gesetzt , zwar als leerer String aber es fliegt einen keine Fehlermeldung um die Ohren.

PHP:
<?php
function foo($bar1, $bar2, $bar3 ="" , $bar4=""){

   echo $bar1." ".$bar2." ".$bar3." ".$bar4;
 
   if(empty($bar3)){
         $bar3 = "hallo Welt";
   } 
   
   echo $bar1." ".$bar2." ".$bar3." ".$bar4;
}
/* sollte eigentlich dennoch funktionieren da die Variablen bar3 und bar4 im 
Funktionskopf auf leer gesetzt werden automatisch*/
foo(1,2); 
foo(1,2,3,4);
foo(1,2,'',4);
?>
 
Zuletzt bearbeitet:
Zurück