Autor Zpráva
nethor
Profil
Zdravím,
prosim poraďe, proč mi fce nevrací hodnotu:

Potřebuji rekurzivni fci, která se opakuje, dokud není splněna podmínka,
když je podmínky dosaženo, má vrátit hodnotu.
Přes echo přímo ve fci ji vypíše správně , ale už ji nepředá příkazem return.
V čem je problém?
Zjednodušený příklad:
<? 
function vrat_se($id)
	{
	(int)$id;
	$id--;
	if ($id > 20)
		{
		echo "<br>id =".$id ;
		vrat_se($id);
		}
	else
		{
		$vysledek = $id;
		echo "<br> echo ve fci vysledek = ".$vysledek;
		return $vysledek;
		}	
	}		
$vysledek_fce = vrat_se(30);
echo "<br> echo ve scriptu vysledek = ".$vysledek_fce ; 
?>


vypíše:
id =29
id =28
id =27
id =26
id =25
id =24
id =23
id =22
id =21
echo ve fci vysledek = 20
echo ve scriptu vysledek =

Předem díky.
koudi
Profil
(int)$id je celkem nesmysl. A řádek 10 by měl vypadat return vrat_se($id);
Nox
Profil
Možná chtěl napsat $id = (int)$id;
koudi
Profil
Nox
Ale nenapsal :)
DJ Miky
Profil
Na devátém řádku si změň
vrat_se($id);
na
return vrat_se($id);
nethor
Profil
$id = (int)$id; - jj. moje chyba.

Po opravě return vrat_se($id); funguje. Díky.

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: