Efektivita příkazů if a switch.
9 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravím. Tak mě napadlo, jaký je rozdíl v provádění příkazů if a switch, pokud chci například rozdělit chování skriptu podle nějakýho kritéria. Dejme tomu, mám tyto dvě verze: 1] if ($den=="Po") {prikazy...} if ($den=="Ut") { jine prikazy...} if ($den=="St") {zas jine prikazy...} . . . 2] switch($den) case "Po": {prikazy...; break;} case "Ut": {jine prikazy...; break;} case "St": {zas jine prikazy...; break;} . . . Jakou variantu je lepší použít? Napsal sem si něco takovýho tou první variantou, ale pak sem si řekl, že přece můžu použít switch, a pak mě napadlo, jestli je to vůbec lepší (podmínky testuju stejně, navíc musím u každé větve použít break....)
-
Pokud nejsou ty if podminky spojeny pres "else if", tak bude druha varianta lepsi - jak se potka prvni vyhovujici, ostatni uz se neporovnavaji. S else if si netroufnu tipnout jestli je nektera rychlejsi.
-
Jojo, díky. To mi nedošlo, že if příkazy se budou testovat i dál, to je fakt. Tak potom už by mě zajímalo jen to, když místo if-příkazů budu používat ono else if. :)
-
Noo...rekneme ze pouzit switch je programatorsky cistsi. A rekneme ze ja se se switchem nikdy nejak neszil :P (V pascalu jsem si skoro jisty, ze se switch/case prekladal jako serie ifu...v C++ a php to nejspis budou skoky, ale to je if ve vyslednem strojovem kodu vlastne taky...takze vazne nevim. Nelamal bych si s tim hlavu. if...else if... nebo switch.)
-
OK, díky. Já to mám rozdělený na docela dost případů, tak sem chtěl, aby to bylo co nejrychlejší, ale zdá se to v pohodě, tak snad dobrý. :)
-
Ver tomu, ze je dobre pouzivat veci k ucelum, ke kterym je nekdo vytvoril. Tedy na rozdeleni podle dnu v tydnu pouzit sviste, a tam kde to nejde (napr. kdyz jedna podminka je ($x==4) a druha ($y!='Hello') ) pouzit elseif. Bud si jist, ze je to to nejlepsi, co muzes udelat.
-
Presne tak, jak ti psali. Ty varianty bych doplnil: 1] if ($den=="Po") {prikazy...} if ($den=="Ut") { jine prikazy...} if ($den=="St") {zas jine prikazy...} 1]b if ($den=="Po") {prikazy...} elseif ($den=="Ut") { jine prikazy...} elseif ($den=="St") {zas jine prikazy...} 1]c if ($den=="Po" || $den=="Ut" && $den=="St") {prikazy...} elseif ($den=="Ut") { jine prikazy...} elseif ($den=="St") {zas jine prikazy...} 1]d if ($den=="Po") {prikazy...} elseif ($den=="Ut") { jine prikazy... return;} elseif ($den=="St") {zas jine prikazy... return;} 2] switch($den) { case "Po": {prikazy...; break;} case "Ut": {jine prikazy...; break;} case "St": {zas jine prikazy...; break;} 2]a switch($den) { case "Po": case "Ut": {prikazy...; break;} case "St": {jine prikazy...; break;} case "Ct": {zas jine prikazy...; break;} 2]b switch($den) { case "Po": case "Ut": {prikazy...; break;} case "St": {jine prikazy...; break;} case "Ct": {zas jine prikazy...; break;} default : {} kde 1c 1d muze byt docela zajimave a 2b take, kdyz za kazdych okolnosti se neco provede. jinak bych zkusil jakpsatweb.cz forum - PHP
-
nej doplnim ze u switch jsou vnitrni slozene zavorky uplne nadbytecne, zato neni dobre zapominat na break (jedna z typickych chyb programatoru)
-
If+elseif a switch+case jsou stejně použitelné. Používej to, cos e ti bude víc líbit nebo bude vypadat v kódu lépe.