Dane mogą być przekazywane do funkcji przez listę argumentów, która jest listą oddzielonych przecinkami wyrażeń.
PHP obsługuje podawanie argumentów jako wartości (domyślnie), przez referencję, oraz domyślne wartości argumentów. Różna ilość argumentów także jest obsługiwana, zobacz opisy funkcji func_num_args(), func_get_arg(), i func_get_args() aby dowiedzieć się więcej.
Przykład #1 Tablica jako argument funkcji
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
Domyślnie, argumenty funkcji podawane są jako wartości (kiedy wartość argumentu wewnątrz funkcji się zmienia, nie wpływa to na wartość zmiennej poza funkcją). Aby pozwolić funkcji na modyfikację jej jej argumentów, muszą one być podane przez referencję.
Aby argument zawsze był podawany przez referencję, poprzedź nazwę argumentu znakiem (&) w definicji funkcji:
Przykład #2 Podawanie parametrów funkcji przez referencję
<?php
function add_some_extra(&$string)
{
$string .= 'i coś ekstra.';
}
$str = 'To jest ciąg znaków, ';
add_some_extra($str);
echo $str; // wypisuje 'To jest ciąg znaków, i coś ekstra.'
?>
Można zdefiniować domyślne wartości skalarne argumentów w stylu C++ następująco:
Przykład #3 Użycie domyślnych wartości argumentów w funkcji
<?php
function makecoffee($type = "cappuccino")
{
return "Robię kubek $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");
?>
Wynikiem powyższego kodu jest:
PHP pozwala również na użycie tablic(array) i specjalnego typu NULL
jako domyślnych wartości, na przykład:
Przykład #4 Użycie nie-skalarnych typów jako domyślnych wartości
<?php
function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL)
{
$device = is_null($coffeeMaker) ? "rąk" : $coffeeMaker;
return "Robię kubek ".join(", ", $types)." za pomocą $device.\n";
}
echo makecoffee();
echo makecoffee(array("cappuccino", "lavazza"), "teapot");
?>
Domyślna wartość musi być stałym wyrażeniem, a nie na przykład zmienną, członkiem klasy czy wywołaniem funkcji.
Zauważ, że przy użyciu domyślnych wartości, powinne one być zdefiniowane po prawej stronie nie-domyślnych argumentów; W przeciwnym wypadku, nie zadziała to jak powinno. Na przykład:
Przykład #5 Niepoprawne użycie domyślnych wartości argumentów
<?php
function makeyogurt($type = "acidophilus", $flavour)
{
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt("raspberry"); // nie zadziała tak, jak oczekujemy
?>
Wynik powyższego skryptu to:
Porównaj go teraz z:
Przykład #6 Poprawne użycie domyślnych wartości argumentów
<?php
function makeyogurt($flavour, $type = "jogurtu")
{
return "Robię miskę $type $flavour.\n";
}
echo makeyogurt("malinowego"); // działa zgodnie z naszymi oczekiwaniami
?>
Wynikiem działania powyższego przykładu jest:
Informacja: Od PHP 5 domyślne wartości argumentów mogą być podawane przez referencję.
Od PHP 4 możliwe jest użycie różnej ilości argumentów dla funkcji definiowanych przez użytkownika. Jest to dosyć proste przy użyciu funkcji func_num_args(), func_get_arg() i func_get_args().
Nie wymaga to żadnej specjalnej składni, listy argumentów w dalszym ciągu podawane są przy definiowaniu funkcji i zachowują się normalnie.