Pregunta:
Fecha: 09-08-2017 15:06:18
(En Español)
Es a modo de ejemplo, por ahí mi explicación no es muy clara. Votos: 0 - Respuestas: 3 - Vistas: 19 Compartir en: Google Facebook Twitter LinkedIn Link
Recorrer y actualizar valores en array[Resuelta]
Buenas, les escribo porque necesito resolver una busqueda y no puedo encontrar la solución, les comento obtengo datos de un archivo txt y los cargo en un array asociativo"$array_principal", pero si hay elementos iguales como el "dni" debo sumar los "montos" y al finalizar crear otro array "$array_final" y generar un archivo txt con los datos del array.
$array_principal = array(
array( 'dni'=>123,'monto'=>100),
array( 'dni'=>586,'monto'=>500),
array( 'dni'=>123,'monto'=>200),...));
$array_final = array(
array( 'dni'=>586,'monto'=>500),
array( 'dni'=>123,'monto'=>300),...));
Es a modo de ejemplo, por ahí mi explicación no es muy clara. Votos: 0 - Respuestas: 3 - Vistas: 19 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 10-08-2017 05:25:58 Si lo entendi la idea es sumar los montos de aquellos registro que tengan igual dni y con ello hacer un txt
el array lo podrias plantear con el indice dni y el valor es la suma del monto
ej.
directamente del archivo tomas los datos al array
$persona[ $dni ] +=$monto;
obtendrias una lista de $persona indexado por dni con valor que es la suma de los valores $monto cuyo dni coincide
con foreach($persona as $dni=>$nonto){ creas tu archivo .txt } Votos: 1 - Link respuesta -
Fecha: 10-08-2017 16:09:24 Esto podría ser una solución:
$array_principal = array( array( 'dni' => 123, 'monto' =>100 ), array( 'dni' => 586, 'monto' => 500 ), array( 'dni' => 123, 'monto' => 200 ) ); $array_final = array(); foreach ($array_principal as $array) { $dnis = array_column($array_final, 'dni'); if (FALSE !== ($k = array_search($array['dni'], $dnis))) { $array_final[$k]['monto'] += $array['monto']; } else { $array_final[] = $array; } } print_r($array_final);
Array ( [0] => Array ( [dni] => 123 [monto] => 300 ) [1] => Array ( [dni] => 586 [monto] => 500 ) )Votos: 1 - Link respuesta -
Fecha: 10-08-2017 16:36:46 Muchas gracias a las dos personas que respondieron, kip 13 y Carlos Ferro es una buena solucion, no conocia esa función array_column(). Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
