Frage zum Grübeln: überspringen eines Parameters

methodus

Erfahrenes Mitglied
hallöschen,

hab mal wieder eine komplizierte frage:

gegeben ist eine Funktion dieser Form:

PHP:
function xyz( $parm1 = "abc", $parm2 = "xyz" ){
 echo $parm1 . $parm2;
}

wie man sehen kann gibt es 2 optionale Parameter mit standardwerten, nun zur frage: wenn ich den ersten parameter nicht ändern möchte sondern nur den zweiten, wie rufe ich die Funktion dementsprechend auf?

als Beispiel: der Funktionsaufruf bringt "abcxyz"
ich möchte aber "abcdef"

xyz( , "def") geht nicht, da gibt es einen Parse-Error,
xyz( "def" ) ändert nur den ersten parameter
xyz( "", "def" ) ändert den ersten Parameter in einen leeren string

zwickmühle: wie rufe ich die funktion auf ohne die ersten parameter zu ändern?!
 
Ich stand vor dem Problem auch schon einmal.
Habs ehrlichgesagt auch nicht zamgebracht.

Habs dann einfach so gemacht:
PHP:
funktion("abc", $variable);
 
umstädnlich könntest du es so machen:

Du übergibst als PArameter 1 oder 2 eine Zeichenkette in dem Format 1:abc, 2:def dann tuste das in nen array schaust welche Zahl davor steht und änderst dann den entsprechenden Paramter

dann rufst du das so auf wenn du den 2 Parameter ändern willst

xyz("2:def")

is umständlich aber erfüllt den zweck
 
Nuinmundo: so hab ichs zur zeit auch, aber merk dir mal von einer vielzahl von befehlen und funktionen die standardwerte jeder funktion, ne extra doku darüber wäre unsinnig, dann brauch man auch die standardwerte nicht mehr

TheWolf: jep, dat is umständlich, n bischen zu umständlich, denn:

dann gesetzt den fall der Parametertyp ist kein String sondern ein Array, dann ergibt sich ein problem:

"1:".$array = problem
 
warum umstaendlich, wenns auch einfach geht :)

also ich hab das immer so geloest.
Die Variablen, die man nicht veraendern muss, stehen ganz hinten:
PHP:
<?php
// $var2 muss nicht veraendert werden
function test( $var1 = "blub", $var2 = "test") {
    echo $var.$var2;
}

test("das ist ein ");
?>

ACHTUNG: Diese Methode geht aber auch nur, wenn du 2 Variablen hast und die uebergeben weillst, bei 3 Variablen, wo du die 1. und 3. angeben willst hast du dann wieder das gleiche Prob!
 
Zuletzt bearbeitet:
meine eigentliche funktion hat aber 4 parameter und mit hinten anstellen is auch blöd, da alle 4 parameter etwa die gleiche priorität haben, also gleich oft genutzt werden.
 
Ich würde der Funktion ein Array übergeben:
PHP:
function foo($rgMyArray = array("wert1", "", "wert3", "");
Jetzt musst du nur in der Funktion den Inhalt des Arrays überprüfen und bei leeren Werten, hier wert2 und wert4 den Standardwert setzen.
Wenn jemand eine einfachere Lösung hat immer her damit :).
 
PHP:
function xyz( $param1 = "abc", $param2 = "xyz" ){
     // check incoming params
     ($param1 == "") ? $param1 = "abc" : $param1 = $param1;
     ($param2 == "") ? $param2 = "xyz" : $param2 = $param2;

     // output params
     echo $param1.$param2;
}

//aufruf mittels

xyz("","def");
xyz("def","");

eine funktion, die eben zwei werte erwartet, der müssen auch zwei werte übergeben werden. außerdem, wenn du irgenwann wieder mal den code änderst oder so, dann weißt du garantiert nich mehr, dass eben genau diese funktion x werte haben will :o)
 
PHP:
function xyz( $param1, $param2 ){
     // check incoming params
     $param1 = (!$param1) ? "abc" : $param1;
     $param2 = (!$param2) ? "xyz" : $param2;

     // output params
     echo $param1.$param2;
}

//aufruf mittels

xyz("","def");
xyz("def","");
 
Was macht ihr das denn so kompliziert dafür gibt es die möglichkeit Methoden zu überladen.

Code:
function xyz($varA,$varB) {
 echo $varA.$varB;
}

function xyz($varB) {
  xzy("abc",$varB);
}

function xyz() {
  xzy("abc","xyz");
}

Somit kannst du die funktion
in 3 verschiedenen Versionen aufrufen
 
Zurück