Forum und email

Funktionsargument

Information kan skickas till funktioner via argumentlistan som är en kommaseparerad lista av variabler och/eller konstanter.

PHP stödjer värden skickas som argument (standard), skickas som referens, och standardargumentsvärden . Argumentlistor med varierbar längd stödjs bara i PHP 4 och senare; se Argumentlistor med varierbar längd och funktionsreferenserna för func_num_args(), func_get_arg(), och func_get_args() för mer information. En liknande effekt går att åstadkomma i PHP 3 genom att skicka en vektor med argument till en funktion.

Example#1 Skicka vektorer till funktioner

<?php
function tar_vektor($input)
{
    echo 
"$input[0] + $input[1] = "$input[0]+$input[1];
}
?>

Gör så att argument skickas som referens

Som standard skickas funktionsargument som värden (så om du ändrar argumentvärdet inuti funktion så ändras den inte utanför funktionen) Om du vill tillåta funktionen att modifiera dess argument så måste du skicka argumenten som referens.

Om du vill att ett argument till en funktion alltid skickas som referens så kan du sätta en ampersand (&-tecken) före argumentnamnet i funktionsdefinitionen:

Example#2 Skicka funktionsparametrar som referenser

<?php
function add_some_extra(&$string)
{
    
$string .= 'and something extra.';
}
$str 'This is a string, ';
add_some_extra($str);
echo 
$str;    // outputs 'This is a string, and something extra.'
?>

Standardvärden för argument

En funktion kan definiera standardvärden för argument precis som i C++. Såhär fungerar det:

Example#3 Användning av standardvärden för argument i funktioner

<?php
function makecoffee ($type "cappuccino")
{
    return 
"Making a cup of $type.\n";
}
echo 
makecoffee ();
echo 
makecoffee ("espresso");
?>

Utmatningen från exemplet ovanför ser ut såhär:

Making a cup of cappuccino.
Making a cup of espresso.
     

Standardvärdet måste vara ett konstant uttryck alltså inte till exempel en variabel, en klassmedlem eller ett funktionsanrop.

När man använder standardargument så bör dessa argument vara på höger sida av de argument som inte använder standardargument, annars kommer det inte att fungera som väntat. Titta på följande exempel:

Example#4 Felaktig användning av standardargument i funktioner

<?php
function makeyogurt ($type "acidophilus"$flavour)
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt ("raspberry");   // won't work as expected
?>

Utmatningen från exemplet ovanför blir:

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

Jämför nu exemplet ovanför med detta:

Example#5 Korrekt användning av standarargument i funktioner

<?php
function makeyogurt ($flavour$type "acidophilus")
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt ("raspberry");   // works as expected
?>

Utmatningen från exemplet ovanför är:

Making a bowl of acidophilus raspberry.
     

Argumentlistor med varierbar längd

PHP 4 har stöd för argumentlistor med varierbar längd i användardefinierade funktioner. Det är riktigt enkelt faktiskt, använd bara funktionerna func_num_args(), func_get_arg(), och func_get_args().

Ingen speciell syntax krävs och argumentlistor kan fortfarande vara tillhandahållna i funktionsdefinitionerna och kommer att fungera som normalt.