Foros del Web » Programando para Internet » PHP »

Sumar valores de elementos repetidos de un array

Estas en el tema de Sumar valores de elementos repetidos de un array en el foro de PHP en Foros del Web. Que tal mi problema es el siguiente: tengo el array: Array ( [0] => Array ( [id] => NAC-MET-002 [canti] => 1 ) [1] => ...
  #1 (permalink)  
Antiguo 07/06/2011, 23:11
Avatar de quizagenio  
Fecha de Ingreso: septiembre-2010
Ubicación: México
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 2
Sonrisa Sumar valores de elementos repetidos de un array

Que tal mi problema es el siguiente:

tengo el array:
Array
(
[0] => Array
(
[id] => NAC-MET-002
[canti] => 1
)

[1] => Array
(
[id] => NAC-MET-002
[canti] => 2
)

[2] => Array
(
[id] => NAC-MET-001
[canti] => 3
)

[3] => Array
(
[id] => NAC-MET-001
[canti] => 4
)

[4] => Array
(
[id] => NAC-MET-001
[canti] => 5
)

[5] => Array
(
[id] => NAC-MET-002
[canti] => 6
)

[6] => Array
(
[id] => IMP-MET-001
[canti] => 7
)

[7] => Array
(
[id] => NAC-MET-002
[canti] => 8
)

)

y quiero obtener ...

Array
(
[0] => Array
(
[id] => NAC-MET-002
[canti] => 17
)
[1] => Array
(
[id] => NAC-MET-001
[canti] => 12
)

[2] => Array
(
[id] => IMP-MET-001
[canti] => 7
)
)

Es decir que se forme un array en donde aparezca una sola vez cada id pero que sume las cantidades de todas las apariciones de ese id del array original.
Espero que esté claro, sino para extenderme más, tengo todo un día con este inconveniente y no logro resolverlo, echenme un mano por favor.
Saludos. Gracias.
  #2 (permalink)  
Antiguo 07/06/2011, 23:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Sumar valores de elementos repetidos de un array

Trata con array_count_values y array_unique.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/06/2011, 02:55
Avatar de solhdeck  
Fecha de Ingreso: junio-2011
Mensajes: 87
Antigüedad: 12 años, 11 meses
Puntos: 32
Respuesta: Sumar valores de elementos repetidos de un array

Código PHP:
<?php
// Siempre me las arreglo con sentencias for.
// En esta, hago que revise todo el array, y que luego, si tienen la misma ID, que sume los valores
//Al final, si te fjas, hago que borre los valores sumados, porque asi consigo solo tener un array con valores.
//podrias complicarlo mas, creando otra variable, o incluso otro array que solo tuviera los valores filtrados y sumados y tal (en este caso, en la primera posicion con cada id tendrias la suma)
for ($i=0;$i<count($array);$i++)
{
    for (
$j=$i+1$j<count($array);$j++)
    {
     if (
$array[$i]['id'] == $array[$j]['id'])
       {
        
$array[$i]['canti']= $array[$i]['canti']+$array[$j]['canti'];
        
$array[$j]['canti']=0;
       }
    
}
Espero que te sirva. Puedes mejorarlo, pero desde la biblioteca de la facultad, y conectandome a mi pc de forma remota me jode un monton programar XD
  #4 (permalink)  
Antiguo 08/06/2011, 11:58
Avatar de quizagenio  
Fecha de Ingreso: septiembre-2010
Ubicación: México
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 2
De acuerdo Respuesta: Sumar valores de elementos repetidos de un array

Gracias camaradas, con las ideas que me brindaron pude resolver el problema, les dejo mi solución a ver si a alguien le sirve y si pueden mejorarla pues bienvenida sea.

function qd_sd($array, $campo, $campo2) {
$nuevo = array();
foreach ($array as $parte) {
$clave[] = $parte[$campo];
}
$unico = array_unique($clave);
foreach ($unico as $un) {
foreach ($array as $original) {
if ($un == $original[$campo]) {
$suma = $suma + $original[$campo2];
}
}
$ele['id'] = $un;
$ele['total'] = $suma;
array_push($nuevo, $ele);
$suma = 0;
}
return $nuevo;
}

$chido = qd_sd($miArray, 'id', 'canti');
echo '<pre>';
print_r($chido);
echo '</pre>';
  #5 (permalink)  
Antiguo 15/06/2011, 22:29
 
Fecha de Ingreso: abril-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: Sumar valores de elementos repetidos de un array

Hola quizagenio resulta que necesitaba lo mismo que tu sumar los valores de los id repetidos y con la función que tienes funciona perfectamente, lo que necesito es cambiar el modo en que me imprime los datos porque salen así:
Array
(
[0] => Array
(
[id] => 16350301
[total] => 15260.9
)
[1] => Array
(
[id] => 16559001
[total] => 7820125.97
)
[2] => Array
(
[id] => 16850601
[total] => 97166.67
)
)
quisiera saber si hay forma de mostrar solamente el id y el valor sumado, algo así
15260.9
7820125.97
97166.67

solamente el valor para poder mostrarlo por medio de tablas con html como una especie de reporte.

Mil Gracias.

Etiquetas: array_combine
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 18:27.