Autor Zpráva
Klascsas
Profil *
Čau,
Můžete my vysvětlit princip funkce return u tohohle kodu? Ikdyž vidím různý výsledek výstupu, nechápu proč to tak je.
Předem díky za odpověd.

function napis(){ 
 return "ahoj";
 }
echo "toto je text, ktery vam rekne: ".napis(); // vypíše: "toto je text, ktery vam rekne: ahoj"
function napis2(){
 echo "ahoj"; 
 }
echo "toto je text, ktery vam rekne: ".napis2(); // vypíše:  "ahojtoto je text, ktery vam rekne:"
David Klouček
Profil
V prvnim příkladu se přečte řetězec, zavolá funkce napis(), která vrátí hodnotu, ta se připojí k předchozímu řetězci a pak se to celý vypíše.

U druhýho se přečte řetezec, zavolá se funkce napis(), která něco provede (vypíše "ahoj") a pak se teprve dokončí příkaz a vypíše ten řetězec.
Tori
Profil
echo "toto je text, ktery vam rekne: ".napis2(); - tady spojujete dva řetězce, druhý má být výsledkem funkce. Nejdřív se tedy zavolá funkce (která napíše "ahoj"), její návratová hodnota (null -> prázdný řetězec) se připojí k předchozímu řetězci a výsledek se zobrazí. Je to podobné, jako $b = 3 / ($a + 8); - taky se nejdřív vyhodnotí výraz v závorkách a až pak se dělí.


Druhý příklad by fungoval podle očekávání v tomhle případě:
function napis2(){
  echo "ahoj"; 
}
echo "toto je text, ktery vam rekne: ", napis2();
Takto se vyhodnocuje zvlášť každá část. Ale většinou je lepší, aby funkce vracela hodnotu. Pokud je jejím účelem jen zjistit nějaká dílčí data (např. položky jedné úrovně menu, jméno přihlášeného uživatele apod.), tak nemůže zároveň rozhodovat o tom, jakým způsobem se mají ta data dál použít - jestli zobrazit, uložit do souboru, vygenerovat PDF, vůbec nepoužít, atd.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0