Php-ban hogy lehet összevonni ezt a kifejezést: if ($a == "string1" or $a == "string2")?
Nem ismerek ra eljarast. Es eleve nem is szukseges. Ha valaki szep kodot akar irni, az is fontos, hogy mas ovasni tudja.
(De irj egy fv-t ra, ha ennyire zavar. )
if( isString1OrString2($a) ) {
}
Én nem "szép" kódot akarok, hanem a lehető legkevesebb lépésből állót (és legkevesebb processzeridőt használót).
Egyszerűbb (szebb?) amúgy if(in_array($a, array("string1", "string2")), de ez sem használ kevesbb erőforrást, szóval maradt ugyanúgy az egész.
Ennél gyorsabban nem fog semmi lefutni. Esetleg használhatsz switch-et:
switch($a) {
case 'string':
case 'string2':
kóóód...
}
De a háttérbe ez is IF-ekké alakul OPkódként. De ha PHPzol , akkor felesleges azon gondolkodni hogy lesz gyorsabb, mert alapból egy lassú nyelv.
Latod en ezt nem ismertem: in_array($a, array("string1", "string2")
Amugy a hatterben ez is 2 IF. (C-ben tuti es en feltetelezem, hogy php-ben is.)
if ($a == "string1" ) {
if( $a == "string2") {
...
}
}
Ha az elso if TRUE, akkor megvizsgalja a masodik feltetelt.
Gyorsitani ugy tudsz egy picit, hogy a kevesbe gyakoribbat rakod bele az elso feltetelbe. Ebben az esetben a masodik IF-et kevesebbszer fogod elerni. Ez valamit gyorsit a kodon...
if ($a == "stringKevesbeGyakori" ) {
if( $a == "stringGyakoribb") {
...
}
}
if ($a == "stringKevesbeGyakori" or $a == "stringGyakoribb" ) {
...
}
"Én nem "szép" kódot akarok, hanem a lehető legkevesebb lépésből állót"..
Hát akkor gondolkozzál már vazze, van egy valamid(A),és tudni akarod, hogy : ugyanolyan-e, mint egy másik valami(B), VAGY ugyanolyan-e, mint egy harmadik valami(C).
Eldöntendő kérdés, tök nyilvánvaló, hogy minimum egy, legfeljebb 2 összehasonlítást el kell végezz.
Tehát ha az egyikkel egyenlő, akkor a másodikat már nem kell vizsgálni.
A kódon nem szükséges változtatnod, ha: a PHP alkalmazza a short-circuit evaluation-t, de ennek azért nézz utána.
Esetleg annyit tudsz rajta optimalizálni, hogy ha tudod, hogy mondjuk az esetek több mint 50%-ában a $a az a "string1"-el lesz egyenlő, akkor marad úgy, ahogy most van.
Ha viszont tudod, hogy mondjuk az esetek több mint 50%ában a "string2"-vel lesz egyenlő, akkor az OR két oldalát cseréld meg.
Persze ez is azon múlik, hogy a PHP interpreter csinál-e rövidzár-kiértékelést, ha nem csinál, akkor értelemszerűen beágyazott if-re kicseréled, tehát:
if ($a == "string1")
{
if ($a=="string2")
{
/*Do something*/
}
}
vagy
if ($a == "string2")
{
if ($a=="string1")
{
/*Do something*/
}
}
19:28 vagyok, hülyeséget írtam :D
Helyesen:
if ($a == "string1")
{
/*Do something*/
}
else
{
if ($a=="string2")
{
/*Do something*/
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!