2012-07-23 18 views
5

Eventuali duplicati:
Short hand to do something like: if($variable == 1 || $variable == “whatever” || $variable == '492') .PHP: se A è uguale B o C o D

È questo

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

la via più breve per descrivere questa logica. Sto pensando a qualcosa di simile

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

ma che non è un codice valido. Eventuali suggerimenti?

+0

cosa c'è di sbagliato con questo metodo? – bugwheels94

+2

Questo non è corretto perché si prova a fare booleano o con || tra valori non booleani. – rkosegi

+3

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

risposta

11

Potreste usare in_array:

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

+1 eccellente tecnica – mrsrinivas

+0

ettari, pensiamo allo stesso modo – bigkm

+0

Si dovrebbe aver chiuso questa domanda come duplicato ... –

1

che entrambi sono non stessi || è operatore booleano e sarà sempre tornare true o false. Quindi, in una seconda affermazione, si sta confrontando se $a è true o false.

È possibile utilizzare in_array per confrontare se $a esiste in array($b, $c, $d)

1

non so perché si vuole fare una sorta di cose, ma è possibile mettere b, c, d in array e chiamare in_array la funzione per la ricerca per elementi. Ancora non riesco a capire perché vuoi codice breve e semplice rendere breve e non semplice.

+0

Perché ho circa 15 valori che voglio farmi nella SE – Martin

+0

modo in_array come suggerito da me e altri. –

2

Questo è un codice valido ma non logicamente corretto.

Se disponi di molti valori, puoi fare qualcosa di simile.

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

Buona risposta, ma è la stessa cosa che @Engineer ha scritto un minuto fa. – Fluffeh

+0

@Fluffeh: E lo stesso di ascii-lime ha scritto 9 mesi fa. –

+0

@FelixKling Senza dubbio ci sono duplicati, siamo solo andati a guardare questo Q & A per vedere i duplicati :) – Fluffeh

Problemi correlati