Есть ли быстрый способ проверить, принадлежит ли переменная к набору? - PullRequest
1 голос
/ 06 июля 2010

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

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

Спасибо:)

Ответы [ 3 ]

1 голос
/ 06 июля 2010
$set = range(0,n);
if (in_array ($value, $set)) {
    print "IS IN ARRAY!";
}

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

$set = array(0,1,3,7...);
1 голос
/ 06 июля 2010

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

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

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

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

1 голос
/ 06 июля 2010

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

Пример:

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