Samizdatová skripta

Definice vlastních funkcí


upravit?

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 () .

Globální proměnné a parametry předávané odkazem

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.

Implicitní hodnota parametru

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;
}

Několik příkladů:

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. */

Rekurze

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);

Příklad rekurze s předávání hodnot mezi fuknce

function Faktorial ($n)
{
if ($n == 0) return 1;
else
return $n * Faktorial ($n - 1);

}

http://interval.cz/clanky/php-vytvarime-vlastni-funkce-v-php/

upravit odstranit css

NAVRCHOLU.cz