function «jméno» («parametre», «parametr2»,...)
{
«příkazy»; return «hodnota»;
}
Pomocí parametrů funkci předáváme hodnoty, které má zpracovat. Příkazem return funkce vrací svůj výsledek.
U jednoduchých funkcí můžeme parametry lze vynechat, stejně tak jako vracení hodnoty. Definujme si tedy jednoduchou funkci Pozdrav, která vypíše pozdrav.
function Pozdrav() { echo "Zdravím vás. "; }
I když funkce nemá parametry, musíme za jejím názvem napsat závorky () .
Někdy budeme potřebovat, aby funkce manipulovala přímo s obsahy globálních proměnných (to jsou ty, které používáme v hlavním skriptu). Jednou z možností, jak toho dosáhnout, je definovat ve funkci příkazem global, ke kterým proměnným má mít přístup.
$globalni1=0, $globalni2=0;
function NazevFunkce ($lokalni1, $lokalni2, $lokalni3)
{
global $globalni1, $globalni2;
příkazy;
return $vysledek;
}
$lokalni1=1;
function NazevFunkce (&$lokalni1, $lokalni2, $lokalni3)
{
$lokalni1*=3;
}
NazevFunkce (&$lokalni1, 0, 0);
echo $lokalni1 //vypíše 3, protože proměnná $lokalni1 byl předána odkazem
Nyní jsou proměnné $globalni1 a $globalni2 přístupné uvnitř funkce, můžeme využívat jejich hodnoty a projeví se na nich jakékoliv operace s nimi.
Druhou možností je takzvané předávání odkazem. Proměnnou předáváme odkazem pomocí znaku &, který je umístěn před proměnné buď v definici vstupů funkce nebo přímo před předávaným parametrem v samotném volání funkce.
V definici (i v deklaraci) můžeme předepsat hodnotu parametru, která se použije v případě, že když předanávaná hodnota je prádzná. Takto zadané parametry pak nejsou povinné, tedy lze funkci volat bez nic.
function «jméno» («parametr1»=hodnota, «parametr2»,...)
{
«příkazy»; return «hodnota»;
}
function Umocni (&$cislo)
{
return $cislo * $cislo;
}
echo " <p>Globální proměnná \$a </p>";
function zmena()
{
global $a;
$a=10;
}
$a=20;
zmena();
echo $a;
echo " <hr>";
echo " <p>Předávání parametrů </p>";
function test(&$a,$b)
{
$a=10;
$b=30;
}
$x=1;
$y=3;
test($x,$y);
echo "$x, $y";
/* Pro provedení funkce test() bude proměnná $x obsahovat hodnotu 10, protože první
parametr funkce je předáván odkazem. Proměnná $y bude mít svou původní hodnotu. */
Slovo rekurzce je odvozeno od řečkého slova "rekuére" značící běžeti zpět. V programátorské praxi se tím míní zvovuzavolání sama sebe (funkce volá sebe) s jinou (nižší) hodnotou paramteru, než je ten, který jí byl předán. Opakem je interace, kde za "jdeme" od spoda nahoru. Napřílad výpočet kaktoriálu uděláme rekurzí tak, že počítám n*(n-1)..(n-n). U iterace počítáme (násobíme)od 0 do n<.
Vytvoření rekurzivně volatelné funkce znamená vytvořit funkci (permoníka), která je schopna provést elementární úlohu a složité předá dál, tedy sobě.
Níže uvádím příklad nosiče piva. Ten je schopen přinést vždy je jedno pivo. Pokud chceme piv N, tak on mám řekne, že přinese jen 1 pivo a (N-1) řekne, že nezvládne. Když se vrátí s jedním pivem, tak zmovu řekne, že chceme přinést (N-1) a on nám odvětí, že může přínést 1 a (n-2) nezvádá. Takto to pokračuji, dokud mám dluží přínést min 1 pivo, tedy, dokud nejde Nkrát.
Zapsáno to vypadá takto:
function nosic_piva($n) {
echo $n;
if ($n>0) {echo " <img src='http://www.maturita.cz/pohlednice/images/pivo.jpg' alt='pivo' />";
nosic_piva($n-1);
}
}
nosic_piva(10);
function Faktorial ($n)
{
if ($n == 0) return 1;
else
return $n * Faktorial ($n - 1);
}
http://interval.cz/clanky/php-vytvarime-vlastni-funkce-v-php/