216 Stimmen

Verwendung von Standardargumenten in einer Funktion

Ich bin verwirrt über Standardwerte für PHP-Funktionen. Angenommen, ich habe eine Funktion wie diese:

function foo($blah, $x = "some value", $y = "some other value") {
    // code here!
}

Was ist, wenn ich das Standardargument für $x verwenden möchte und ein anderes Argument für $y festlegen möchte?

Ich habe mit verschiedenen Möglichkeiten experimentiert und werde nur noch verwirrter. Zum Beispiel habe ich diese beiden versucht:

foo("blah", null, "test");
foo("blah", "", "test");

Aber bei beiden wird kein ordnungsgemäßes Standardargument für $x erzeugt. Ich habe auch versucht, es nach dem Variablennamen zu setzen.

foo("blah", $x, $y = "test");   

Ich hatte erwartet, dass so etwas funktioniert. Aber es funktioniert überhaupt nicht so, wie ich es erwartet habe. Es scheint, als ob ich, egal was ich tue, die Standardargumente beim Aufrufen der Funktion jedes Mal eingeben muss. Und ich muss etwas Offensichtliches übersehen.

0voto

Bruno Yuzo Punkte 379

Nur eine andere Möglichkeit zu schreiben:

function sum($args){
    $a = $args['a'] ?? 1;
    $b = $args['b'] ?? 1;
    return $a + $b;
}

echo sum(['a' => 2, 'b' => 3]); // 5 
echo sum(['a' => 2]); // 3 (2+1)
echo sum(['b' => 3]); // 4 (1+3)
echo sum([]); // 2 (1+1)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X