2017-02-26 4 views
0

Wenn ich eine Funktion wiePass Werte auf bestimmte Argumente in PHP

function foo($a, $b = 2, $c = 3) 
{ 
    return [$a, $b, $c]; 
} 

Dann kann ich c vorbei $b und $ weglassen, da sie Standardwerte haben. Aber, sagen wir, ich möchte etwas an $c weitergeben, aber nicht an $b. Wie kann ich es tun? Natürlich könnte ich ihre Plätze in der Deklaration tauschen (function foo($a, $c = 3, $b = 2), aber dann würde ich nicht nur $b passieren können.

Mein Punkt ist, dass ich eine Funktion erstellen möchte, die Argumente mit Standardwerten hat, aber die, die ich übergeben möchte, variiert. Ich habe das versucht: print_r(foo(1, $c = 5)), aber es ergibt [1, 5, 3] nicht in [1, 2, 5].

+0

Auch http : //stackoverflow.com/questions/1342908/named-php-optional-arguments –

+0

Sie können den zweiten Parameter nicht überspringen. Wenn Sie den dritten Parameter übergeben müssen, müssen Sie * den richtigen Wert für den zweiten Parameter übergeben. –

+0

Nicht möglich. Was ich mache ist: 'foo ($ param1, 2, $ param3)' d. H., Den Standard beibehalten. – apokryfos

Antwort

1

PHP unterstützt keine benannten Parameter. Sie können nur bestellt Parameter mit der richtigen in der richtigen Position

zB

foo($a, 4 , 3); 

oder schließlich nicht zugewiesene Wert wurde in verwandten null bewertet verwenden Vars

foo($a, null , 3); 

Ergebnis

esults in [1, null, 3] 
+0

Das ist falsch. NULL wird der zweite Wert in diesem Array. https://3v4l.org/TvvQP –

+0

Okay, danke. Das sieht scheußlich aus, aber das ist nicht das einzige unästhetische Ding in php, denke ich. – Fiodor

+0

@JohnConde Cirrect-Antwort aktualisiert – scaisEdge