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/