Reduzir o tamanho da matriz numérica por média dos valores em PHP: 20 Valores => X valores

StackOverflow https://stackoverflow.com/questions/1203467

  •  05-07-2019
  •  | 
  •  

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!

Foi útil?

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
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top