Nueva pregunta

Pregunta:

Fecha: 09-08-2017 15:06:18 (En Español)

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.
Etiquetas: Array PHP - PHP - Pregunta 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
     
  •  
      1  
     
    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
 
frjcbbae garagebible.com