PHP - Modificar arreglo durante el foreach

 
Vista:
Imágen de perfil de John
Val: 91
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Modificar arreglo durante el foreach

Publicado por John (33 intervenciones) el 04/02/2020 19:48:54
Hola amigos.
traigo desde la base de datos un array que se ve más o menos asi
Captura-de-pantalla_2020-02-04_14-23-48
esto me funciona perfecto y me muestra por pantalla todo. Pero quisiera poder combinar en uno solo por ejemplo el indice 0 con el indice 1, es decir colocarle una nueva descripción y sobre todo sumar los montos de ambos, que en este ejemplo seria un monto de 168000.

lo que se me ocurrio fue hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function html($concepto,$valor){
       $complemento = 0;
       if($concepto=='DIFERENCIA COMPLEMENTO'){
             $complemento = $valor;
       }
 
       if($concepto=='COMPLEMENTO'){
             $complemento += $valor;
             $valor = $complemento;
             $concepto = 'Nuevo nombre del concepto';
 
        }
 
        echo "
                    <tr>
                        <td style='text-align: left; width: 300px;'>
                            ".$concepto."
                        </td>
                        <td style='text-align: center; width: 300px;'>
                            ".number_format($valor,2)."
                        </td>
                    </tr>
                ";
        }
 
foreach ($pay as $value){
     html($value->descripcion,$value->sum);
 }

Sin embargo no me funciona, me muestra en pantalla todos los registros que trae el array. obviamente se que me falta pero necesito una guia por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Modificar arreglo durante el foreach

Publicado por Julio (830 intervenciones) el 04/02/2020 21:30:33
Hola.

Fíjate que "no estás haciendo nada" realmente. Haz una pequeña traza.

1. Entras en la función html con $concepto = 'COMPLEMENTO' y $valor = '124800'
2. En la primera línea de la función, $complemento coge el valor 0
3. No entra en el primer if
4. Entra en el segundo if y ahora $complemento es igual al $valor, así que $complemento = '124800'
5. $valor coge ahora el valor de $completo, o sea, también '124800'
6. $concepto sí que cambia ahora y contiene 'Nuevo nombre del concepto'
7. Imprimes por pantalla 'Nuevo nombre del concepto' y '124800'
8. Siguiente iteración del foreach. Entras en la función html con $concepto = 'DIFERENCIA COMPLEMENTO' y $valor = '43200'
9. En la primera línea de la función, $complemento coge el valor 0
10. Ahora sí entra en el primer if
11. Y pones a $complemento con el valor de $valor, es decir, $complemento = '43200'
12. No entra en el segundo if
13. Imprimes por pantalla 'DIFERENCIA COMPLEMENTO', que no ha cambiado y $valor, que no ha cambiado en toda la función y sigue siendo '43200'

Es decir, realmente la función no te está haciendo nada. Cada vez que la llamas, lo haces con un valor diferente, pones a $complemento siempre con valor 0 y no "acumulas" en ningún sitio para que haga lo que pretendes. Creo que te habrás liado un poco con el foreach y la función.

Si ésto te ayuda y ves cómo puedes ir cambiándolo, adelante. Si no sabes cómo hacerlo, vuelve a comentarlo por aquí y te intentaré ayudar más concretamente. También puedes pasarte por mi blog Programación Básica donde estoy intentando abordar la programación y PHP en particular desde lo más sencillo, con ejemplos simples y comprensibles. Aún hay poco contenido pero cada semana añado dos o tres nuevos artículos. Ya nos comentas.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de John
Val: 91
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Modificar arreglo durante el foreach

Publicado por John (33 intervenciones) el 04/02/2020 21:34:48
Gracias Julio ya lo solucione, solo era cuestión de pensarlo un poco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Modificar arreglo durante el foreach

Publicado por joel (1269 intervenciones) el 04/02/2020 21:33:36
Ten en cuenta que ese array contiene objetos en su interior...

De donde sale ese array?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar