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
PHP Manual