Autor Zpráva
libis
Profil
Zdravím, řešil jsem ted neco s funkcemi a nevím proč se tohle děje..

mám 2 obyčejné funkce

function napis($autor){
echo("ahoj $autor!");
}


function napis2($autor){
echo("ahoj $autor!");
}


a když to vypisu takto:

echo napis($autor)." - ".napis2($autor);


tak ta pomlcka bude az nakonci, ale když takto:

echo napis($autor); echo " - "; echo napis2($autor);


tak bude uprostred, jak má být.

Může mi někdo vysvětlit, v čem se to liší?
Majkl578
Profil
protoze ve funkci pouzivas echo, ktere to vypise driv nez se vypise retezec sestaveny z navracenych hodnot.
Joker
Profil
libis:
Není to taková záhada, když si uvědomíte, že funkce napis a napis2 nic nevracejí, ale přímo v sobě vypisují ten text.

Čili, co udělá následující, pokud budu mít $autor = "Jokere"?
echo napis($autor)." - ".napis2($autor);

- vezme se hodnota $autor (= "Jokere") a předá se funkci napis. Ta vypíše text "ahoj Jokere!" a nic nevrátí. Zatím máme na výstupu "ahoj Jokere!"
- K ničemu se operátorem spojování řetězců připojí " - ". Nic se tím pádem konvertuje na prázdný řetězec. Výsledkem je řetězec " - ", výstup je stále "ahoj Jokere!".
- Další operátor spojování řetězců, PHP vyhodnotí pravou stranu. Vezme hodnotu $autor (= "Jokere") a předá funkci napis2. Ta vypíše text "ahoj Jokere!" a nic nevrátí.
Na výstupu máme "ahoj Jokere!ahoj Jokere!"
- výstup funkce napis2 je nic, operátor spojování řetězců opět konvertuje na prázdný řetězec a připojí k tomu co už máme, výsledkem je stále " - "
- Celý výraz byl vyhodnocen, takže výsledný řetězec: " - " se předá funkci echo(), která ho vypíše na výstup. Výsledný výstup: "ahoj Jokere!ahoj Jokere! - "
king26
Profil
function napis($autor){
return ("ahoj $autor!");
}

function napis2($autor){
return ("ahoj $autor!");
}

echo napis($autor)." - ".napis2($autor);
libis
Profil
aha díky za poučení ...

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: