Уменьшите размер числового массива путем усреднения значений в PHP: 20 значений => значения X - PullRequest
3 голосов
/ 30 июля 2009

В PHP у меня есть массив, содержащий 20 или более элементов. Ключи были назначены автоматически. Значения являются случайными числами от 1 до 50.

<?php
$randomList = array();
for ($i = 0; $i < 20; $i++) {
  $randomList[] = mt_rand(1, 50);
}
?>

Теперь я хочу построить этот массив в виде линейного графика. К сожалению, я могу использовать только 5 баллов для графика. Поэтому я должен уменьшить количество элементов в массиве. Но я не хочу, чтобы внешний вид диаграммы изменился. Поэтому мне нужна такая функция:

Чтобы было понятнее: когда я хочу уменьшить размер массива с 6 до 3 элементов, я могу просто суммировать пары из двух элементов каждая и взять среднее значение:

массив (1, 8, 3, 6, 9, 5) => массив (4,5, 6, 7)

Моя функция должна делать это с переменными размерами (для ввода и вывода).

Надеюсь, вы мне поможете. Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 30 июля 2009

Чтобы "укоротить" массив $randomList до $X элементов описанным выше способом, вы можете использовать array_chunk () и array_map () вместе, как это:

$randomList = array_chunk($randomList, count($randomList) / $X);
$randomList = array_map('array_average', $randomList);

И определить array_average() как:

function array_average($array) {
    return array_sum($array) / count($array);
}
0 голосов
/ 30 июля 2009
$randomList = array();
for ($i = 0; $i < 20; $i++) {
  $randomList[] = mt_rand(1, 50);
}  

$avgList=array();
for($i=0;$i<count($randomList)/2;$i++) {
   $avgList[] = ($randomList[$i*2] + $randomList[$i*2+1]) / 2
}
...