Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calcular el procentaje de valores de un mismo array

Estas en el tema de Calcular el procentaje de valores de un mismo array en el foro de PHP en Foros del Web. Hola. He buscado por todos los rincones de internet para solucionar un pequeño problema. Necesito calcular el procentaje entre valores de un mismo array. El ...
  #1 (permalink)  
Antiguo 13/02/2013, 13:02
 
Fecha de Ingreso: junio-2012
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Calcular el procentaje de valores de un mismo array

Hola.

He buscado por todos los rincones de internet para solucionar un pequeño problema. Necesito calcular el procentaje entre valores de un mismo array.

El array es el siguiente:

Código PHP:
Array
(
    [
3] => Array
        (
            [
0] => 110
            
[1] => 451
            
[2] => 655
            
[3] => 567
        
)

    [
8] => Array
        (
            [
0] => 102
            
[1] => 306
            
[2] => 477
            
[3] => 164
        
)


Y necesito calcular el procentaje correspondientes de los valores de la key "3" y "8" y me devolviese lo siguiente:

Código PHP:
Array
(
    [
3] => Array
        (
            [
0] => 51,89
            
[1] => 59,58
            
[2] => 57,86
            
[3] => 77,56
        
)

    [
8] => Array
        (
            [
0] => 48,11
            
[1] => 40,42
            
[2] => 42,14
            
[3] => 22,44
        
)

Si teneis alguna idea de como empezar o que funciones aplicar os lo agradeceria mucho. Gracias de antemano
  #2 (permalink)  
Antiguo 13/02/2013, 13:38
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Calcular el procentaje de valores de un mismo array

hola


mmm y como calculas el porcentaje ?
  #3 (permalink)  
Antiguo 14/02/2013, 02:13
 
Fecha de Ingreso: junio-2012
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Calcular el procentaje de valores de un mismo array

Pues algo así a, algo parecido a esto.

Código PHP:
$total array_sum($array);

foreach(
$array as &$hits) {
   
$hits round($hits $total 1001) . '%';

El problema es a la hora de recorrer el array, que necesito el % entre los valores, no del total de los valores.
  #4 (permalink)  
Antiguo 14/02/2013, 04:29
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Calcular el procentaje de valores de un mismo array

Buenas!

Prueba algo así:

Código PHP:
Ver original
  1. function media(&$keys1, &$keys2){
  2.   for($i=0;$i<count($keys1);$i++){
  3.     $total = $keys1[$i] + $keys2[$i];
  4.  
  5.     $keys1[$i] = ($total / $keys1)*100;
  6.     $keys2[$i] = ($total / $keys2)*100;
  7.   }
  8. }

y para obtener los porcentajes:

Código:
//$array = funcion_obtiene_array();
/*$array = 
Array 
( 
    [3] => Array 
        ( 
            [0] => 110 
            [1] => 451 
            [2] => 655 
            [3] => 567 
        ) 

    [8] => Array 
        ( 
            [0] => 102 
            [1] => 306 
            [2] => 477 
            [3] => 164 
        ) 

)*/

$array = media($array[3], $array[8]);
//aquí $array tendría ya las medias, ya que las pasamos por referencia.
supongo que siempre tendrán la misma longitud ambas arrays, ¿no? sino, tendrías que comprobar la longitud antes de hacer las operaciones.

Espero que te sirva, ya dirás.

Saludos
  #5 (permalink)  
Antiguo 14/02/2013, 10:05
 
Fecha de Ingreso: junio-2012
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Calcular el procentaje de valores de un mismo array

Gracias DoHITB. Con eso me he conseguido lo que queria.

Aqui lo dejo por si le sirve a alguien.

Código PHP:
$array = array(=> array(=> '110'=> '451',=> '655'=> '567'), => array(=> '102'=> '306 ',=> '477'=> '164 '));

function 
media(&$keys1, &$keys2){
 
    if( 
count($keys1)!=count($keys2) ) return array();
    
    for (
$i=0;$i<count($keys1);$i++) 
    {
        
        
$total $keys1[$i] + $keys2[$i];
        
        
$key1[$i] = ($keys1[$i] / $total)*100;
        
$key2[$i] = ($keys2[$i] / $total )*100;
        
        
$res = array();
        foreach(
$key1 as $key => $val )
        {       
            
$res[3][$key] = $val;
        }
        foreach(
$key2 as $key => $val )
        {       
            
$res[8][$key] = $val;
        }

    
    }
    
}


media($array[3], $array[8]); 

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:09.