Ayuda para sumar datos de un Array Asociativo
Publicado por Omar Saboya Caro (2 intervenciones) el 14/02/2019 05:46:42
Hola comunidad
Es mi primer post aquí, y espero contar con vuestra ayuda
intento resolver este arreglo.
$datos[0] = ["id"=>"98","nombre"=>"INA","importe"=>"3.20","tax"=>"0.00"];
$datos[1] = ["id"=>"97","nombre"=>"EXO","importe"=>"5.20","tax"=>"0.00"];
$datos[2] = ["id"=>"97","nombre"=>"EXO","importe"=>"15.00","tax"=>"0.00"];
$datos[3] = ["id"=>"10","nombre"=>"IVA","importe"=>"3.00","tax"=>"0.46"];
$datos[4] = ["id"=>"97","nombre"=>"EXO","importe"=>"22.00","tax"=>"0.00"];
$datos[5] = ["id"=>"10","nombre"=>"IVA","importe"=>"100.00","tax"=>"18.00"];
$datos[6] = ["id"=>"98","nombre"=>"INA","importe"=>"1.80","tax"=>"0.00"];
$datos[7] = ["id"=>"96","nombre"=>"GRA","importe"=>"7.00","tax"=>"0.00"];
se debe agrupar por ID y nombre, y sumar los importe(s) y tax(s).
Intente con este código, pero no logro rearmar mis datos asociativos con los nuevos registros.
$arrayTmp = array();
$arrayTmp2 = array();
$arrayTmp3 = array();
$arrayTmp4 = array();
foreach ( $datos as $elemento ) {
if ( array_key_exists($elemento['id'],$arrayTmp) ) {
$arrayTmp[$elemento['id']] += $elemento['importe'];
} else {
$arrayTmp[$elemento['id']] = $elemento['importe'];
}
if ( array_key_exists($elemento['id'],$arrayTmp2) ) {
$arrayTmp2[$elemento['id']] += $elemento['tax'];
} else {
$arrayTmp2[$elemento['id']] = $elemento['tax'];
}
if ( array_key_exists($elemento['id'],$arrayTmp3) ) {
$arrayTmp3[$elemento['id']] .= '';
} else {
$arrayTmp3[$elemento['id']] = $elemento['id'];
}
if ( array_key_exists($elemento['id'],$arrayTmp4) ) {
$arrayTmp4[$elemento['id']] .= '';
} else {
$arrayTmp4[$elemento['id']] = $elemento['nombre'];
}
}
$merge = array_merge($arrayTmp,$arrayTmp2,$arrayTmp3,$arrayTmp4);
print_r($merge);
de antemano,
Gracias por el valioso aporte.
Es mi primer post aquí, y espero contar con vuestra ayuda
intento resolver este arreglo.
$datos[0] = ["id"=>"98","nombre"=>"INA","importe"=>"3.20","tax"=>"0.00"];
$datos[1] = ["id"=>"97","nombre"=>"EXO","importe"=>"5.20","tax"=>"0.00"];
$datos[2] = ["id"=>"97","nombre"=>"EXO","importe"=>"15.00","tax"=>"0.00"];
$datos[3] = ["id"=>"10","nombre"=>"IVA","importe"=>"3.00","tax"=>"0.46"];
$datos[4] = ["id"=>"97","nombre"=>"EXO","importe"=>"22.00","tax"=>"0.00"];
$datos[5] = ["id"=>"10","nombre"=>"IVA","importe"=>"100.00","tax"=>"18.00"];
$datos[6] = ["id"=>"98","nombre"=>"INA","importe"=>"1.80","tax"=>"0.00"];
$datos[7] = ["id"=>"96","nombre"=>"GRA","importe"=>"7.00","tax"=>"0.00"];
se debe agrupar por ID y nombre, y sumar los importe(s) y tax(s).
Intente con este código, pero no logro rearmar mis datos asociativos con los nuevos registros.
$arrayTmp = array();
$arrayTmp2 = array();
$arrayTmp3 = array();
$arrayTmp4 = array();
foreach ( $datos as $elemento ) {
if ( array_key_exists($elemento['id'],$arrayTmp) ) {
$arrayTmp[$elemento['id']] += $elemento['importe'];
} else {
$arrayTmp[$elemento['id']] = $elemento['importe'];
}
if ( array_key_exists($elemento['id'],$arrayTmp2) ) {
$arrayTmp2[$elemento['id']] += $elemento['tax'];
} else {
$arrayTmp2[$elemento['id']] = $elemento['tax'];
}
if ( array_key_exists($elemento['id'],$arrayTmp3) ) {
$arrayTmp3[$elemento['id']] .= '';
} else {
$arrayTmp3[$elemento['id']] = $elemento['id'];
}
if ( array_key_exists($elemento['id'],$arrayTmp4) ) {
$arrayTmp4[$elemento['id']] .= '';
} else {
$arrayTmp4[$elemento['id']] = $elemento['nombre'];
}
}
$merge = array_merge($arrayTmp,$arrayTmp2,$arrayTmp3,$arrayTmp4);
print_r($merge);
de antemano,
Gracias por el valioso aporte.
Valora esta pregunta


0