Kezdőoldal » Számítástechnika » Programozás » Php-ban hogy lehet összevonni...

Php-ban hogy lehet összevonni ezt a kifejezést: if ($a == "string1" or $a == "string2")?

Figyelt kérdés
2011. okt. 18. 13:46
1 2
 1/13 anonim ***** válasza:
Nem ertem. Mit jelent az, hogy osszevonni?
2011. okt. 18. 13:51
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
hogy a "$a ==" ne legyen benne csak egyszer.
2011. okt. 18. 13:54
 3/13 anonim ***** válasza:

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) ) {


}

2011. okt. 18. 14:22
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:

É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.

2011. okt. 18. 15:31
 5/13 anonim ***** válasza:

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.

2011. okt. 18. 16:18
Hasznos számodra ez a válasz?
 6/13 anonim ***** válasza:

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" ) {

...

}

2011. okt. 19. 08:16
Hasznos számodra ez a válasz?
 7/13 anonim ***** válasza:

"É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*/

}

}

2011. okt. 19. 19:28
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
Ja és beágyazott if-nél persze fordul a feltétel sorrend, nyilván a kevésbé gyakorit kell először vizsgálni.
2011. okt. 19. 19:31
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:

19:28 vagyok, hülyeséget írtam :D

Helyesen:

if ($a == "string1")

{

/*Do something*/

}

else

{

if ($a=="string2")

{

/*Do something*/

}

}

2011. okt. 19. 20:15
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:
Gyorsítani nem ilyeneken kell, ez így a leggyorsabb. Ezen a szinten sokkal fontosabb az ergonomikus, következetes kód, mert futás szempontjából ezen nem igazán tudsz gyorsítani, ellenben a szép, átgondolt kód sokat gyorsít a fejlesztésen.
2011. okt. 25. 09:28
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!