PHP で 2 つの値の間の配列に存在する配列要素の数を見つける方法。
これが私の配列だとしましょう=>
$a = array(1,2,3,5,10);
2つの値、つまり2と10の間の配列の長さを見つけたいので、この場合の答えは3になります。検索する最大値が配列に存在する場合は、カウントに追加する必要があります。
また、2 から 9 までの配列の長さは 2 です。
私の質問が明確であることを願っています。どんな助けでも大歓迎です。
array_filter()
一致する要素まで配列をフィルター処理してからcount()
、結果のフィルター処理された配列で使用します。
$a = array(1,2,3,5,10);
print count(array_filter($a, function($e) {return ($e>=2 && $e<=10);}));
それが役立つことを願っています。
注: ここで使用した組み込み関数を含む構文には、PHP v5.3 以降が必要です。
[編集]
それを単純な呼び出し可能な関数に変えます:
$a = array(1,2,3,5,10);
print countInRange(2,10);
function countInRange($min,$max) {
return count(array_filter($a, function($e) use($min,$max) {return ($e>=$min && $e<=$max);}));
}
array_filter()
functionの詳細については、PHP のマニュアルを参照してください。
$count = 0;
for( $i = 0; $i < count($a); $i++ ) {
if( $a[$i] <= $max && $a[$i] >= $min )
$count++;
}
echo $count;
$count = 0;
$min = 2;
$max = 10;
$a = array(1,2,3,5,10);
foreach($a as $val) {
if($val > $min && $val <= $max) ++$count;
}
これはうまくいくはずですよね?少なくとも、最小値よりも大きいが最大値より小さい/等しいすべての数値が検出されます。
もちろん、これは、1, 2, 9, 5
9 と 5 の両方が 2 より大きく 10 より小さいため、 の配列が 2 を返すことも意味します。