PHP-manual | ||
---|---|---|
Föregående | Kapitel 17. Funktioner | Nästa |
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.
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:
En funktion kan definiera standardvärden för argument precis som i C++. Såhär fungerar det:
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:
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:
Utmatningen från exemplet ovanför är:
Making a bowl of acidophilus raspberry. |
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.
Föregående | Hem | Nästa |
Funktioner | Upp | Returnera värden |