2012-07-23 1 views
5

Możliwe duplikaty:
Short hand to do something like: if($variable == 1 || $variable == “whatever” || $variable == '492') .PHP: Jeżeli równa B lub C lub D

Czy to

if ($a==b||$a==c||$a==$d){ ... 

najkrótsza droga do opisania tej logiki. myślę o czymś jak

if ($a==($b||$c||$d)) { ... 

ale to nie jest prawidłowy kod. Jakieś sugestie?

+0

co jest nie tak z tą metodą? – bugwheels94

+2

To nie jest poprawne, ponieważ próbujesz zrobić boolean lub z || między wartościami nielogicznymi. – rkosegi

+3

Użyj ['in_array'] (http://php.net/in_array). – deceze

Odpowiedz

11

Można użyć in_array:

if(in_array($a, array($b,$c,$d))){ 
    //do something 
} 
+1

+1 Znakomita technika – mrsrinivas

+0

ha, myślimy podobnie – bigkm

+0

Powinieneś zamknąć to pytanie jako duplikat ... –

1

, że oba nie są takie same jak || operator jest logiczna i zawsze zwraca true lub false. Tak więc w drugim stwierdzeniu porównujesz, czy $a jest true lub false.

Można użyć in_array porównać jeśli $a istnieje w array($b, $c, $d)

1

nie wiem, dlaczego chcesz robić jakieś rzeczy, ale można umieścić B, C, D w tablicy i zadzwonić in_array funkcji do szukania dla elementów. Nadal nie mogę zrozumieć, dlaczego chcesz skrócić i prosty kod zrobić krótkie i nie proste.

+0

Ponieważ mam około 15 wartości, które chcę, aby mnie w IF – Martin

+0

więc in_array, jak zasugerował mi i inni. –

2

To jest prawidłowy kod, ale nie jest poprawny logicznie.

Jeśli masz wiele wartości, możesz zrobić coś takiego.

if(in_array($a,array($b,$c,$d))) { 
} 
+0

Dobra odpowiedź, ale jest taka sama, jak napisał @Engineer minutę temu. – Fluffeh

+0

@Fluffeh: Tak samo jak ascii-lime napisał 9 miesięcy temu. –

+0

@FelixKling Nie ma wątpliwości, że istnieją duplikaty, po prostu posunął się tak daleko, jak patrząc na to pytanie i zobaczyć duplikaty :) – Fluffeh