フォームがあり、入力がenum(0,1,2,3、..、n)に属しているかどうかを確認する必要があります。変数がセット[0:n]に属しているかどうかを確認する簡単な方法はありますか?または、各条件を記述する必要がありますか(基本的にn <10なので、実行可能ですが、その実践ではありません...)?
それを行うためのネイティブ関数がない場合、このための関数を作成する方法についてのヒントを教えてください。
ありがとう :)
range()
とを組み合わせて使用できますin_array()
。
例:
$number = 5;
$set = range(0, 10);
if (in_array($number, $set))
{
//
}
$set = range(0,n);
if (in_array ($value, $set)) {
print "IS IN ARRAY!";
}
これは 0 から n までの範囲に当てはまります。特定の範囲を作成する場合。fe 0,1,3,7、使用できます
$set = array(0,1,3,7...);
範囲を作成してin_arrayを実行することもできますが、それはおそらくパフォーマンスに優れていません。PHP は、提供された数値を内部的にループして、まったく新しい (場合によっては巨大な) 配列を作成し、その配列をもう一度ループして、X がどこかにあるかどうかを確認します。これは、単純な「これらの数値内に収まっているか」をチェックするのに必要な作業よりもはるかに多くの作業です。
この 2 つの条件に固執するのがおそらく最善の方法です。これが何らかの理由で本当にあなたに届いている場合は、ヘルパー関数を作成することもできます。
function is_within_inclusive($x, $start, $end) {
return $x >= $start && $x <= $end;
}
ただし、範囲がすでに定義されている場合は、とにかく、他の理由でin_arrayは問題ないようです。