Eso muestra en todos los casos.
Mira, he hecho un ejemplo, y funciona perfectamente:
Código php:
Ver original<?php
$foo = 9;
switch(true) {
case ($foo > 0 AND $foo < 7):
echo "Mayor que 0, menor que 7<br />";
break;
case($foo == 8):
echo "Igual a 8<br />";
break;
case($foo > 8):
echo "Mayor que 8<br />";
break;
default:
echo "Ninguna<br />";
break;
}
if($foo > 0 AND $foo < 7) {
echo "Mayor que 0, menor que 7<br />";
} elseif($foo == 8) {
echo "Igual a 8<br />";
} elseif($foo > 8) {
echo "Mayor que 8<br />";
} else {
echo "Ninguna<br />";
}
?>
En ambos casos imprime: Mayor que 8 correctamente.
Avalua las condicionales:
var_dump(($user->admin_rights==9), ($user->admin_rights==8), /** etc */);
EDIT: Ahora que veo bien, lo esta imprimiendo correctamente:
Imprime: Principiante
Y mas abajo, la imagen correspondiente a ese rango.
Por lo tanto, el switch esta funcionando bien. Algo mas, arriba de ese codigo, esta fallando.