2010-07-06 3 views
1

У меня есть форма, и мне нужно проверить, принадлежит ли вход enum (0,1,2,3, .., n) Есть ли простой способ проверить, принадлежит ли моя переменная к набору [0: n ]? Или мне нужно писать каждое условие (в основном, n < 10, так что это возможно, но не так ...)?Есть ли быстрый способ проверить, принадлежит ли переменная к набору?

Если у вас нет встроенной функции, не могли бы вы дать мне подсказку о том, как сделать функцию для этого?

Спасибо :)

+1

Как вы указываете свой набор? –

ответ

1

Вы можете использовать комбинацию range() и in_array().

Пример:

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

Спасибо, я не знал о range(), действительно практичен. –

+0

Добро пожаловать! – jeroen

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

Это верно для диапазона от 0 до п Если вы хотите, чтобы сделать определенный диапазон. F.E. 0,1,3,7, вы можете использовать

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

Вы могли бы сделать range и запустить in_array, но это, вероятно, не будет большим для работы. PHP будет внутренне заканчивать номера, которые вы предоставили, чтобы создать совершенно новый (потенциально огромный) массив, а затем перебирать массив снова, чтобы увидеть, где X находится где-то. Это намного больше, чем нужно для простой проверки «есть ли в этих цифрах».

Придерживаясь двух условий, вероятно, лучший способ пойти, тем более, что это было бы гораздо более читаемым. Вы также можете сделать вспомогательную функцию, если это по какой-то причине действительно доходит до вас.

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

Но если у вас уже есть диапазон определен, во всяком случае, по другим причинам, in_array кажется прекрасным.