salto - En PHP, ¿hay una forma corta de comparar una variable con varios valores?
salto de linea php (5)
Con caja de interruptor
switch($variable){
case ''one'': case ''two'': case ''three'':
//do something amazing here
break;
default:
//throw new Exception("You are not worth it");
break;
}
Básicamente, me pregunto si hay una manera de acortar algo como esto:
if ($variable == "one" || $variable == "two" || $variable == "three")
de tal manera que la variable se puede probar o comparar con múltiples valores sin repetir la variable y el operador cada vez.
Por ejemplo, algo como esto podría ayudar:
if ($variable == "one" or "two" or "three")
o cualquier cosa que resulte en menos escritura.
Sin la necesidad de construir una matriz:
if (strstr(''onetwothree'', $variable))
//or case-insensitive => stristr
Por supuesto, técnicamente, esto devolverá verdadero si la variable es twothr
, por lo que agregar "delimitadores" podría ser útil:
if (stristr(''one/two/three'', $variable))//or comma''s or somehting else
Usar preg_grep
podría ser más corto y más flexible que usar in_array
:
if (preg_grep("/(one|two|three)/i", array($variable))) {
// ...
}
Debido a que el modificador de patrón i
opcional (no sensible) puede coincidir con mayúsculas y minúsculas.
in_array()
es lo que uso
if (in_array($variable, array(''one'',''two'',''three''))) {
$variable = ''one'';
// ofc you could put the whole list in the in_array()
$list = [''one'',''two'',''three''];
if(in_array($variable,$list)){
echo "yep";
} else {
echo "nope";
}