Die Kommentare sind gut, aber ich denke, wir brauchen eine Antwort.
exampleA()
array $a
Kräfte, die Argumente mit array
als Typ, und wenn nicht wirft es einen abfangbare Fehler:
exampleA();
exampleA(1, 'A');
Beide Ausbeute:
Catchable fatal error: Argument 1 passed to exampleA() must be of the type array, none given, called in file on line X and defined in file on line X
Während in exampleB()
mit $a = array()
:
function exampleB($a = array(), $b = array())
{
var_dump(get_defined_vars());
}
Sets Standardwerte leere Arrays, wenn keine Werte geliefert werden:
exampleB();
Ausbeuten:
array(2) { ["a"]=> array(0) { } ["b"]=> array(0) { } }
Wenn jedoch Werte zugeführt werden, diese Werte unabhängig von der Art verwendet werden:
exampleB(1, 'A');
Erträge:
array(2) { ["a"]=> int(1) ["b"]=> string(1) "A" }
Die zweite Option stellt den Standardwert auf ein leeres Array ein. Wenn Sie diese Funktion ohne Parameter aufrufen, sind $ a und $ b leere Arrays. – yBrodsky
'function exampleA (Array $ a, Array $ b)' erwartet explizit ein Array und erzeugt einen Fehler, wenn der übergebene Parameter kein Array ist . 'Funktion BeispielB ($ a = Array(), $ b = Array)' ist egal, was die Typen von $ a und $ b sind, und wird sie auf leere Arrays setzen, wenn sie nicht übergeben werden. –