Reduzir o tamanho da matriz numérica por média dos valores em PHP: 20 Valores => X valores
Pergunta
No PHP eu ter uma matriz que contém 20 elementos ou mais. As chaves foram atribuídos automaticamente. Os valores são números aleatórios de 1 a 50.
<?php
$randomList = array();
for ($i = 0; $i < 20; $i++) {
$randomList[] = mt_rand(1, 50);
}
?>
Agora eu quero traçar essa matriz em um gráfico de linhas. Infelizmente, só posso usar 5 pontos para o gráfico. Então eu tenho que reduzir o número de elementos na matriz. Mas eu não quero a aparência do gráfico a ser alterado. Então eu preciso de uma função como esta:
Para tornar mais claro: Quando eu quiser reduzir o tamanho de uma matriz a partir de 6 elementos para 3 elementos, eu só posso resumir pares de dois elementos cada e tomar a média:
matriz (1, 8, 3, 6, 9, 5) => matriz (4,5, 6, 7)
A minha função deve fazer isso com tamanhos variáveis ??(para entrada e saída).
Eu espero que você possa me ajudar. Agradecemos antecipadamente!
Solução
Para "encurtar" um $randomList
matriz para elementos $X
na maneira que você descreveu, você poderia usar array_chunk () e array_map () juntos como este:
$randomList = array_chunk($randomList, count($randomList) / $X);
$randomList = array_map('array_average', $randomList);
E definir array_average()
como:
function array_average($array) {
return array_sum($array) / count($array);
}
Outras dicas
$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
}