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.

1voto

SandroMarques Punkte 4912

Meine 2 Cent mit dem Null-Kollationsoperator ?? (seit PHP 7)

function foo($blah, $x = null, $y = null) {
    $varX = $x ?? 'Standardwert X';
    $varY = $y ?? 'Standardwert Y';
    // ...
}

Sie können mehr Beispiele auf meinem repl.it prüfen

0voto

SergeS Punkte 11008

Dies ist der Fall, wenn Objekte besser sind - denn Sie können Ihr Objekt so einrichten, dass es x und y enthält, Standardwerte festlegen usw.

Der Ansatz mit Arrays ähnelt dem Erstellen von Objekten (tatsächlich ist ein Objekt eine Gruppe von Parametern und Funktionen, die mit dem Objekt arbeiten, und eine Funktion, die ein Array entgegennimmt, wird mit einer Gruppe von Parametern arbeiten)

Sie können natürlich immer einige Tricks anwenden, um Null oder etwas Ähnliches als Standardwert zu setzen

0voto

Odin Punkte 9
";
}
info();     // gibt die Standardwerte aus (Anzahl der Werte = 2)
info("Nick");   // ändert den ersten Standardwert von George zu Nick
info("Mark",17);    // ändert beide Standardwertwerte

?>

0voto

Roger Punkte 53

Geben Sie ein Array an die Funktion weiter, anstatt einzelne Parameter zu verwenden, und verwenden Sie den Null-Kohaleszenz-Operator (PHP 7+).

Im Folgenden übergebe ich ein Array mit 2 Elementen. Innerhalb der Funktion überprüfe ich, ob der Wert für item1 gesetzt ist, falls nicht, wird standardmäßig ein Wert zugewiesen.

$args = ['item2' => 'item2',
        'item3' => 'value3'];

    function function_name ($args) {
        isset($args['item1']) ? $args['item1'] : 'Standardwert';
    }

0voto

lufc Punkte 1907

PHP 8 Methode, dies zu tun:

function foo($blah, ?$x, ?$y) {
    $x = $x ?? "einiger Wert";
    $y = $y ?? "ein anderer Wert";
}

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