1

PHP で 2 つの値の間の配列に存在する配列要素の数を見つける方法。

これが私の配列だとしましょう=>

$a = array(1,2,3,5,10);

2つの値、つまり2と10の間の配列の長さを見つけたいので、この場合の答えは3になります。検索する最大値が配列に存在する場合は、カウントに追加する必要があります。

また、2 から 9 までの配列の長さは 2 です。

私の質問が明確であることを願っています。どんな助けでも大歓迎です。

4

3 に答える 3

6

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 のマニュアルを参照してください。

于 2013-03-19T11:36:34.080 に答える
1
$count = 0;
for( $i = 0; $i < count($a); $i++ ) {
  if( $a[$i] <= $max && $a[$i] >= $min )
    $count++;
}
echo $count;
于 2013-03-19T11:36:38.387 に答える
0
$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, 59 と 5 の両方が 2 より大きく 10 より小さいため、 の配列が 2 を返すことも意味します。

于 2013-03-19T11:35:01.850 に答える