Ir para conteúdo
Fórum Script Brasil

jremerich

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que jremerich postou

  1. Rapaziada! Beleza? Estou fazendo um site de anúncios e o projeto pede aquelas barras laterais que o mercado livre, americanas.com e outros e-commerces usam que contém intervalo de valores algo como abaixo: Preço - R$ 0,00 até R$ 100,00 - R$ 100,00 até R$ 200,00 - R$ 200,00 até R$ 300,00 Mas esses intervalos dependem dos valores dos produtos. Essa informação eu já tenho organizado em um array +/- como abaixo: $valores = array( 8790.0 => array(8790.0, 3), 6300.0 => array(6300.0, 2), 0.0 => array(0.0, 6) ); Sendo constituído por: $valores[VALOR-DO-PRODUTO] = array(VALOR-DO-PRODUTO, qtd-de-produtos-com-o-mesmo-valor) Eu fiz um script que busca o valor máximo e depois divide esse máximo por 3, que é a quantidade de faixas que quero exibir (like mercado livre) a esse resultado divido por 1000. Após a divisão por 1000 eu aplico a função ceil para arredondar para cima e multiplico novamente por 1000. Vejam o script de testes completo: <?php $valores = array( 8790.0 => array(8790.0, 3), 6300.0 => array(6300.0, 2), 0.0 => array(0.0, 6) ); $max = 0; foreach($valores as $vlr=>$dados){ if($vlr > $max){ $max = $vlr; } } echo $max; //divide pela quantidade de faixas (3) $qtdFaixas = 3; $intervaloFaixas = ceil(($max/$qtdFaixas)/1000)*1000; $arrFaixas = array(); $ini = 0; for($i=0; $i<$qtdFaixas; $i++){ $qtdResultados = 0; $fim = $ini+$intervaloFaixas; foreach($valores as $vlr=>$dados){ if($vlr >= $ini && $vlr <= $fim){ $qtdResultados += $dados[1]; } } $arrTmp = array($ini, $fim, $qtdResultados); $arrFaixas[] = $arrTmp; $ini = $fim; } echo '<pre>'; print_r($arrFaixas); ?> Assim retornou o que eu quero, parece ter solucionado.. acontece que no meu site terá produtos com 1.000 até, sei lá, 1.000.000 e se eu continuar operando com 1.000 não vai trazer o resultado que eu quero. Chequei a pensar em contar quantas casas antes do ponto flutuante tem pra então gerar o operador que eu preciso, mas pensei em perguntar pra turma antes pois achei gambiarra de mais! Aguardo ancioso a ajuda dos amigos!
×
×
  • Criar Novo...