Autor Zpráva
dife
Profil *
v Promenne GET mam pokazde neco jineho tedy maximalne moznosti

Resim toto:

asi pro deset ma byt stejny vysledek pro dalsich pet jiny a proten zbytek take jiny.


a nevim jak to zapsat.. nyni to mam

if ........
elseif......... { tu je to stejne }
elseif.........
elseif.........
elseif........{tu je to u dalsich peti stejne}
.
.
.
.
.
.
.
elseif........... {a tu je to u toho ybztku stejne}


nevite jak to zjednodusit.?
Peter p360t Kováč
Profil
no mohol by si to trochu presnejšie popísať. každopádne, na tebou načrtnuté konštrukcie sa používa switch:

switch ($premenna){ // premenna je ta hodnota, ktoru budes testovat
case "value1": // ak ma premenna hodnotu "value1", vykonava prikazy (...)
...
echo "Premenna ma hodnotu value1";
...
break;
case "value2": // ak ma premenna hodnotu "value2", vykonava prikazy (...)
...
echo "Premenna ma hodnotu value2";
...
break;
... // atd, takychto pripadov tam mas kolko chces
// na konci mozes dat default: - to znamena, ze ak sa ani jedna z predchadzajucich hodnot
// v premennej nenachadzala, vykonaju sa prikazy pod defaultom.
default:
...
echo "Premenna nema ani jednu z predpokladanych hodnot, takze ste zadali zle udaje...";
...
break;
}


robí to v podstate to isté, ale je to rýchlejšie pri dlhších konštrukciách (teda, ja som to nemeral, ale píšu to v dokumentácii).

viac na http://www.php.net/manual/cs/control-structures.switch.php
Joker
Profil
Peter p360t Kováč
A v tomhle případě bych ještě navíc využil "propadávání", takže... Nechce se mi vypisovat deset možností :) tak řekněme, že mám čísla slovně a první tři jsou první skupina, druhé dvě druhá skupina a zbytek třetí skupina:
switch($promenna){
case "jednicka":
case "dvojka":
case "trojka":
echo("První skupina");
break;
case "ctyrka":
case "petka":
echo("Druhá skupina");
break;
default:
echo("Třetí skupina");
}

Z pohledu zpracování toho kódu je to sice úplně totéž jako if, elseif, elseif, else, ale IMHO je to daleko přehlednější.
HonzaH2
Profil
pokud dobře chápu, že pro deset různých hodnot GET má být stejný výsledek a pak pro 5 dalších jiný stejný výsledek a pro zbytek třetí jiný výsledek, tak bych to napsal jen ve třech větvích takto:

if (podmínka1 or podmínka2 or ....... podmínka10)
výsledek1;
elseif(podmínka1 or podmínka2 or ....... podmínka5)
výsledek2;
else
výsledek3;
dife
Profil *
dekuji zaujalo me to posledni reseni od HonzaH2.

vysledke je zde: "funkcni "

if (isset($_GET["dalsi"])) {
$spatyp = $_GET["typ"];
$odkaz = $_GET["odkaz"];
if ($spatyp=="SP41") { $ipadresa = "nastzar4";}
elseif ($spatyp=="SP41" or $spatyp=="SP42" or $spatyp=="SP21" or $spatyp=="SP22" or $spatyp=="SP22" ) {$ipadresa = "nastzar4";}
elseif ($spatyp=="SP01" or $spatyp=="SP001" or $spatyp=="SP002" or $spatyp=="SP0003" or $spatyp=="PT-EU" ) {$ipadresa = "nastzar2";}
elseif ($spatyp=="SP100" or $spatyp=="SP102" or $spatyp=="SP02" ) {$ipadresa = "nastzar3";}
else { echo "<center><b> Erorr 31 = </b>nebyla splněna podmínka sekce "nastzar5".</center>";}
}


ted me napada ze bych tio jeste zjdenoduchsil... :-)
Hugo
Profil
dife

IMHO je řešení pomocí switch elegantnější a udržovatelnější. (viz Joker)
Joker
Profil
Považuju toto:
switch($spatyp){
case "SP41":
case "SP42":
case "SP21":
case "SP22": $ipadresa = "nastzar4";
break;

case "SP01":
case "SP001":
case "SP002":
case "SP0003":
case "PT-EU": $ipadresa = "nastzar2";
break;

case "SP100":
case "SP102":
case "SP02": $ipadresa = "nastzar3";
break;

default: echo "<center><b> Erorr 31 = </b>nebyla splněna podmínka sekce "nastzar5".</center>";
}

za přehlednější a čitelnější, než:

if ($spatyp=="SP41") { $ipadresa = "nastzar4";}
elseif ($spatyp=="SP41" or $spatyp=="SP42" or $spatyp=="SP21" or $spatyp=="SP22" or $spatyp=="SP22" ) {$ipadresa = "nastzar4";}
elseif ($spatyp=="SP01" or $spatyp=="SP001" or $spatyp=="SP002" or $spatyp=="SP0003" or $spatyp=="PT-EU" ) {$ipadresa = "nastzar2";}
elseif ($spatyp=="SP100" or $spatyp=="SP102" or $spatyp=="SP02" ) {$ipadresa = "nastzar3";}
else { echo "<center><b> Erorr 31 = </b>nebyla splněna podmínka sekce "nastzar5".</center>";}
}
kvoky
Profil *
Joker

Super, ani sem nevěděl že takhle to jde dělit na skupiny...Díky
tiso
Profil
kvoky ďalšia možnosť: in_array - riešenie bude podobné ako napísal HonzaH2
Toto téma je uzamčeno. Odpověď nelze zaslat.