Användardefinierade funktioner: Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '== Användardefinierade funktioner == En funktion kan definieras med syntax som följande: === Exempel #1 Pseudokod för att demonstrera användning av funktioner === <pre> <?php function foo($arg_1, $arg_2, →...,: $arg_n) { echo "Exempelfunktion.\n"; return $retval; } ?> </pre> Alla giltiga PHP-kod kan förekomma inuti en funktion, inklusive andra funktioner och klassdefinitioner. Funktionsnamn följer samma regler som andra etiketter i PHP. Ett giltigt fu...') |
(Ingen skillnad)
|
Nuvarande version från 18 augusti 2024 kl. 17.59
Användardefinierade funktioner
En funktion kan definieras med syntax som följande:
Exempel #1 Pseudokod för att demonstrera användning av funktioner
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Exempelfunktion.\n";
return $retval;
}
?>
Alla giltiga PHP-kod kan förekomma inuti en funktion, inklusive andra funktioner och klassdefinitioner.
Funktionsnamn följer samma regler som andra etiketter i PHP. Ett giltigt funktionsnamn börjar med en bokstav eller understreck, följt av valfritt antal bokstäver, siffror eller understreck. Som ett reguljärt uttryck skulle det uttryckas så här: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`.
Tips: Se även Userland Naming Guide.
Funktioner behöver inte definieras innan de refereras, förutom när en funktion är villkorligt definierad som visas i de två exemplen nedan.
När en funktion är definierad på ett villkorligt sätt, som i de två visade exemplen, måste dess definition behandlas innan den kan anropas.
Exempel #2 Villkorliga funktioner
<?php
$makefoo = true;
/* Vi kan inte anropa foo() härifrån
eftersom den inte existerar ännu,
men vi kan anropa bar() */
bar();
if ($makefoo) {
function foo()
{
echo "Jag existerar inte förrän programmet når mig.\n";
}
}
/* Nu kan vi säkert anropa foo()
eftersom $makefoo utvärderades till true */
if ($makefoo) foo();
function bar()
{
echo "Jag existerar omedelbart vid programstart.\n";
}
?>
Exempel #3 Funktioner inom funktioner
<?php
function foo()
{
function bar()
{
echo "Jag existerar inte förrän foo() anropas.\n";
}
}
/* Vi kan inte anropa bar() ännu
eftersom den inte existerar. */
foo();
/* Nu kan vi anropa bar(),
foo()'s bearbetning har
gjort den tillgänglig. */
bar();
?>
Alla funktioner och klasser i PHP har det globala omfånget - de kan anropas utanför en funktion även om de definierades inuti och vice versa.
PHP stöder inte funktionsöverlagring, och det är inte möjligt att avdefiniera eller omdefiniera tidigare deklarerade funktioner.
Notera: Funktionsnamn är inte skiftlägeskänsliga för ASCII-tecknen A till Z, men det är vanligtvis god sed att anropa funktioner som de visas i sin deklaration.
Både variabelt antal argument och standardargument stöds i funktioner. Se även funktionsreferenserna för func_num_args(), func_get_arg() och func_get_args() för mer information.
Det är möjligt att anropa rekursiva funktioner i PHP.
Exempel #4 Rekursiva funktioner
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>
Notera: Rekursiva funktions-/metodanrop med över 100-200 rekursionsnivåer kan krascha stacken och orsaka att det aktuella skriptet avslutas. Speciellt anses oändlig rekursion vara ett programmeringsfel.
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/functions.user-defined.php
PHP
Språkreferens
Språkreferens#Funktioner