2012-07-23 9 views
5

Duplicar posibles:
Short hand to do something like: if($variable == 1 || $variable == “whatever” || $variable == '492') .PHP: si a es igual a B o C o D

Es esta

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

el camino más corto para describir esta lógica. Estoy pensando en algo así como

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

pero eso no es un código válido. ¿Alguna sugerencia?

+0

¿Qué hay de malo con este método? – bugwheels94

+2

Esto no es correcto porque intentas hacer booleano o con || entre valores no booleanos. – rkosegi

+3

Utilice ['in_array'] (http://php.net/in_array). – deceze

Respuesta

11

Usted podría utilizar in_array:

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

1 Excelente técnica – mrsrinivas

+0

ha, pensamos igual – bigkm

+0

Debe haber cerrado esta pregunta como duplicado ... –

1

que ambos son iguales que no es || operador booleano y siempre volver true o false. Por lo tanto, en la segunda declaración, está comparando si $a es true o false.

Se puede utilizar para comparar in_array$a si existe en array($b, $c, $d)

1

no sé por qué usted quiere hacer algún tipo de cosas, pero Usted puede poner b, c, d en la matriz y llamar in_array función para buscar para elementos Todavía no puedo entender por qué quieres que el código corto y simple sea breve y no simple.

+0

Porque tengo unos 15 valores que quiero meterme en el SI – Martin

+0

por lo in_array según lo sugerido por mí y otros. –

2

Eso es un código válido, pero no lógicamente correcto.

Si usted tiene un montón de valores entonces se podría hacer algo como esto.

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

Buena respuesta, pero es la misma que @Engineer escribió hace un minuto. – Fluffeh

+0

@Fluffeh: Y lo mismo que ascii-lime escribió hace 9 meses. –

+0

@FelixKling No hay duda de que hay duplicados, simplemente fue tan lejos como mirar este Q & A para ver duplicados :) – Fluffeh

Cuestiones relacionadas