Funkcje definiowane przez użytkownika
Zwracanie wartości
Funkcje
PHP Manual

## Argumenty funkcji

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];
}
?>`

### Podawanie argumentów jako referencji

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.'
?>`

### Domyślne wartości argumentów

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:

Robię kubek cappuccino.
Robię kubek .
Robię kubek espresso.

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:

Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41
Making a bowl of raspberry .

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:

Robię miskę malinowego jogurtu.

> Informacja: Od PHP 5 domyślne wartości argumentów mogą być podawane przez referencję.

### Podawanie różnej ilości argumentów

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.

Funkcje definiowane przez użytkownika
Zwracanie wartości
Funkcje
PHP Manual