2010-07-06 9 views
1

J'ai un formulaire et je dois vérifier si une entrée appartient à enum (0,1,2,3, .., n) Existe-t-il un moyen simple de vérifier si ma variable appartient à l'ensemble [0: n ]? Ou dois-je écrire chaque condition (fondamentalement n < 10, donc c'est faisable mais pas ce practicle ...)?Existe-t-il un moyen rapide de vérifier si une variable appartient à un ensemble?

S'il n'y a pas de fonction native pour faire cela, pourriez-vous me donner un indice sur la façon de créer une fonction pour cela?

Merci :)

+1

Comment spécifiez-vous votre ensemble? –

Répondre

1

Vous pouvez utiliser une combinaison de range() et in_array().

Exemple:

$number = 5; 
$set = range(0, 10); 
if (in_array($number, $set)) 
{ 
    // 
} 
+0

Merci, je ne savais pas à propos de range(), vraiment pratique. –

+0

De rien! – jeroen

1
$set = range(0,n); 
if (in_array ($value, $set)) { 
    print "IS IN ARRAY!"; 
} 

Cela est vrai pour la plage de 0 à n Si vous voulez faire plage spécifique. f.e. 0,1,3,7, vous pouvez utiliser

$set = array(0,1,3,7...); 
1

Vous pouvez faire le range et exécuter in_array, mais ce ne serait probablement pas grand pour la performance. PHP finirait en interne par faire défiler les nombres que vous avez fournis pour créer un tout nouveau tableau (potentiellement énorme), puis faire une boucle dans le tableau encore une fois pour voir si X est là quelque part. C'est beaucoup plus de travail que nécessaire pour une simple vérification "est-ce dans ces chiffres".

S'en tenir aux deux conditions est probablement la meilleure façon de procéder, d'autant plus que ce serait beaucoup plus lisible. Vous pouvez également faire une fonction d'aide si c'est, pour une raison quelconque, vraiment arriver à vous.

function is_within_inclusive($x, $start, $end) { 
    return $x >= $start && $x <= $end; 
} 

Mais si vous avez déjà la plage définie, de toute façon, pour d'autres raisons, in_array semble bien.