Foros del Web » Programando para Internet » PHP »

Si existe en array sumar cantidad y eliminar duplicado

Estas en el tema de Si existe en array sumar cantidad y eliminar duplicado en el foro de PHP en Foros del Web. Buenas compañeros, tengo una duda respecto a buscar un array. Lo que necesito es buscar si existe en el array mas de un elemento con ...
  #1 (permalink)  
Antiguo 05/03/2013, 04:16
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Si existe en array sumar cantidad y eliminar duplicado

Buenas compañeros, tengo una duda respecto a buscar un array. Lo que necesito es buscar si existe en el array mas de un elemento con dos claves iguales, en ese caso, sumar la clave cantidad y eliminar uno, para evitar que se pinte dos veces.

Por ej:

Código PHP:
Ver original
  1. array(0=>array("id"=>4,"ubicacion"=>2,"cantidad"=>5),1=>array("id"=>4,"ubicacion"=>2,"cantidad"=>10),2=>array("id"=>6,"ubicacion"=>8,"cantidad"=>10));

en este caso hay dos con el mismo id y ubicacion, me gustaría solo mostrar 1 pero con las cantidades sumadas. Espero que podais ayudarme, mil graciass!
  #2 (permalink)  
Antiguo 05/03/2013, 14:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Si existe en array sumar cantidad y eliminar duplicado

Yo crearía un nuevo arreglo, usando ID como índice, de forma que se pueda verificar fácilmente.

Código PHP:
Ver original
  1. // Creas el array
  2. $conIndices = array();
  3.  
  4. // Recorres el que ya tienes
  5. foreach($array as $elem) {
  6.     $id = $elem['id'];
  7.     if(isset($conIndices[$id])) {
  8.          // Ya existe, sólo sumas cantidad
  9.          $conIndices[$id]['cantidad'] += $elem['cantidad'];
  10.     } else {
  11.         // No existe, lo agregas
  12.          $conIndices[$id] = $elem;
  13.     }
  14. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: cantidad, duplicado
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 23:46.