Jak funguje podmínka if? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak funguje podmínka if? – PHP – Fórum – Programujte.comJak funguje podmínka if? – PHP – Fórum – Programujte.com

 

fix0
Stálý člen
23. 8. 2018   #1
-
0
-

Ahoj,

potřebuji radu ohledně fungování podmínky if.

Uvedu příklad:

if (splněna) {

   akce1();

} else if (také splněna) {

   akce2();

} else {

   akce3();

}

Dotazy:

1. Pokud jsou splněny obě podmínky, tak se vykoná akce1(); i akce2(); ? Intuice mi říká, že to určitě má vykonat jen první podmínku a dál se konstrukcí podmínky nezabývá, najde první splňující platnou podmínku a zbytek zahodí. Problém je, že se mi algoritmus opravdu chová tak, že vykonává obě akce, což mě dost mate.. :-D

2. Pokud odpověď na první otázku je ANO, tak mi prosím poraďte, zda tam funguje neco jako  break? V návodech to nevidím.

Nahlásit jako SPAM
IP: 92.240.177.–
KIIV
~ Moderátor
+43
God of flame
23. 8. 2018   #2
-
+1
-
Zajímavé
fix +

Ne, pokud je splnena prvni podminka, vykona se jen prvni blok. Kdyz neni splnena, pak se vykonava else vetev (tam blok nemas, takze se vykonava jeden prikaz - tj. if).

Tam je dalsi if, takze se vyhodnoti podminka a zase to same jako predchozi cast.

Pokud bys mel treba za  else strednik, pak by ten strednik byla prazdna akce ve vetvi else, ale dalsi if by tam uz nepatril a vykonal se nezavisle na prvnim vetveni.

Neni nic jednodussiho, nez si pridat par kontrolnich vypisu a zjistit, kudy to jde

Nahlásit jako SPAM
IP: 185.163.40.–
Program vždy dělá to co naprogramujete, ne to co chcete...
MilanL+1
Grafoman
23. 8. 2018   #3
-
+1
-
Zajímavé
fix +
#1 fix

podle konstrukce co jsi ukázal, to vyhodnotí pouze 3 ze 4 možných stavů, druhá podmínka by se měla vyhodnocovat pouze pokud není splněna první. 

if (splněna) {
// provede se při splnění 1.podmínky nezávisle na 2. podmínce 
   akce1();

} else if (také splněna) {
// provede se při splnění 2.podmínky pokud 1.podmínka není splněna
   akce2();

} else {
// provede se při nesplnění obou podmínek
   akce3();

}

pokud bys chtěl při splnění 1. podmínky akce podle stavu druhé musel bys tu druhou podmínku vložit i do toho prvního bloku.

Nahlásit jako SPAM
IP: 91.139.9.–
fix0
Stálý člen
23. 8. 2018   #4
-
0
-

Já spíš myslel jestli neexistuje nějaký speciální případ, ve kterém by bylo možné, aby nastalo co jsem popsal, tedy vykonání všech bloků splňujících podmínku, i když to prostě nemůže být, když to klíčové slovo "else" vylučuje.

No nic tedy neřešte udělám nějaké logování a pořádně to prověřím. Přitom amatérky  programuji přes 10 let, ale dnes si přijdu jako kdyby první den. Takhle se mi if chová prvně. Napsal jsem to imperativně, je to pěkný guláš, vnořené podmínky apod, možná mi něco uniklo, odkrokuji si to a přijdu na to. Napsal jsem sem, jen protože sem na rybách vrtá mi to hlavou a nudím se. :-D

Nahlásit jako SPAM
IP: 92.240.177.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý