Посчитать кол-во значений в массиве по условиям
У меня есть большой массив данных из чисел
array(5,5,10,20,30,40,50,64,7,10);
Как мне вывести из него кол-во значений от и до, как :
От 0 - 10
От 11 - 20
...
От 91-100
У меня получилось так, но это кажется не правильно
$array = array(5,5,10,20,30,40,50,64,7,10);
function Counter($array, $from, $to) {
$count = 1;
foreach ($array as $number) {
if($number <= $to && $number >= $from) {
$count++;
}
}
return $count;
}
echo "<p>0 - 10:" . Counter($array, 0, 10). "</p>";
echo "<p>11 - 20:" . Counter($array, 11, 20). "</p>";
echo "<p>21 - 30:" . Counter($array, 21, 30). "</p>";
Ответы (2 шт):
Автор решения: Евгений Тихии
→ Ссылка
$numbers = [105, 5, 10, 20, 30, 40, 50, 64, 7, 10, 99, 65, 44, 23, 150, 90, 12, 22, 16, 77, 74, 83, 90];
$conditions = [
[0, 10],
[11, 20],
[21, 30],
[30, 100]
];
foreach ($conditions as $cond) {
foreach ($numbers as $num) {
if ($num >= $cond[0] && $num <= $cond[1]) $countByCond["From $cond[0] to $cond[1]"]++;
}
}
echo '<pre>';
print_r ($countByCond);
Array
(
[From 0 to 10] => 4
[From 11 to 20] => 3
[From 21 to 30] => 3
[From 30 to 100] => 12
)
Автор решения: MBo
→ Ссылка
Для данных диапазонов (ideone):
$array = array(5,5,10,20,30,40,50,64,7,10);
$a = array_fill(0, 10, 0);
foreach ($array as $number)
$a[(int)($number/10)]++;
print_r($a);