Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Crear array a partir del un bucle FOR

Estas en el tema de Crear array a partir del un bucle FOR en el foro de PHP en Foros del Web. Hola amigos, tengo un problema que me trae de cabeza, debe ser una tontería pero ya se me han terminado mis propios recursos, os planteo ...
  #1 (permalink)  
Antiguo 01/05/2013, 14:04
 
Fecha de Ingreso: abril-2012
Ubicación: Badajoz
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Crear array a partir del un bucle FOR

Hola amigos, tengo un problema que me trae de cabeza, debe ser una tontería pero ya se me han terminado mis propios recursos, os planteo el problema.

Tengo un proyecto que consiste en el desarrollo de formulas estadísticas. El calculo estadístico supone trabajar con muestras, y las muestras se pueden guardar en ARRAY. Pues bien, dicho esto para contextualizar el problema, os cuento el problema concreto que tengo.

Tengo el siguiente código PHP:

<?php
$muestra1 = array(2, 4, 7);
$muestra2 = array(3, 5, 6);

$n = count($muestra1) - 1;

for ( $e = 0 ; $e <= $n ; $e ++) {

$datos = $muestra1[$e] + $muestra2[$e];

$muestra3 = "$datos<br />";

echo $muestra3;

}
?>

Tengo dos muestras, la 1 y la 2, y de estas dos tengo que sacar una tercera en un array, que en este caso es la suma de la muestra 1 y 2. Pues bien, el código me calcula correctamente la muestra 3, pero no logro meterla en un array, para a partir de ese array realizar mas cálculos, como por ejemplo calcular la suma de la muestra 3 mediante array_sum.

¿Podeis ayudarme?

Gracias de antemano

Última edición por uterra; 01/05/2013 a las 14:25 Razón: sumar dos array
  #2 (permalink)  
Antiguo 01/05/2013, 16:22
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 568
Antigüedad: 19 años
Puntos: 25
Respuesta: Crear array a partir del un bucle FOR

Código PHP:
Ver original
  1. <?php
  2. $muestra1 = array(2, 4, 7);
  3. $muestra2 = array(3, 5, 6);
  4.  
  5. $n = count($muestra1) - 1;
  6.  
  7. $muestra3=array();
  8.  
  9. for ( $e = 0 ; $e <= $n ; $e ++) {
  10.  
  11. $datos = $muestra1[$e] + $muestra2[$e];
  12.  
  13. $muestra3[] = $datos;
  14.  
  15.  
  16. $muestra3 = "$datos<br />";
  17.  
  18. echo $muestra3;
  19.  
  20. }
  21. ?>

Asi tienes un tercer array con la suma.
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #3 (permalink)  
Antiguo 02/05/2013, 15:37
 
Fecha de Ingreso: abril-2012
Ubicación: Badajoz
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Crear array a partir del un bucle FOR

Muchas gracias por tu pronta respuesta vb2005.

Veamos, el resultado que obtengo así es 5, la suma del primer elemento de cada array.

A este resultado he llegado varias veces, de ni se cuantas maneras. El resultado que tengo que obtener es el siguiente:

Tengo estas muestras

Muestra 1: 2, 4, 7
Muestra 2: 3, 5, 6

Tengo que obtener una muestra que seria:

Muestra 3: 5, 9, 13

Y de esta muestra, en array, debería poder obtener, por ejemplo, mediante array_sum 27, que es el sumatorio (o suma) de la muestra 3.

¿Me he explicado correctamente? Esto es lo que busco y no logro conseguir de manera alguna.

He buscado por todas partes, y no logro saber como operar con array distintos, operar con los elementos del array, ya se, es operar con array diferentes lo que no consigo.

Nuevamente, gracias de antemano
  #4 (permalink)  
Antiguo 02/05/2013, 15:48
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Crear array a partir del un bucle FOR

Mira lo que necesitas es simple, nada mas haz esto


Código PHP:
Ver original
  1. <?php
  2. $muestra1 = array(2, 4, 7);
  3. $muestra2 = array(3, 5, 6);  
  4.  
  5. $muestra3=array();
  6.  
  7. for($e=0;$e<count($muestra1);$e++) {
  8.  $muestra3[$e]= $muestra1[$e] + $muestra2[$e];
  9.  }
  10. /*Imprimes el arreglo para ver el contenido**/
  11. echo "<pre>";
  12. print_r($muestra3);
  13. echo "</pre>";
  14. ?>
  #5 (permalink)  
Antiguo 02/05/2013, 16:00
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Crear array a partir del un bucle FOR

Mira si quieres el resultado de la suma del tercer array aca te dejo un ejemplo
Código PHP:
Ver original
  1. <?php
  2.     $muestra1 = array(2, 4, 7);
  3.     $muestra2 = array(3, 5, 6);
  4.      
  5.     $n = count($muestra1) - 1;
  6.      
  7.     $muestra3=array();
  8.      
  9.     for ( $e = 0 ; $e <= $n ; $e ++) {
  10.      
  11.     $datos = $muestra1[$e] + $muestra2[$e];
  12.      $resultado=0;
  13.     $muestra3[$e] = $datos;
  14.      foreach ($muestra3 as $valor){
  15.      $resultado=$resultado+$valor;
  16.      
  17.          }
  18.      
  19.      
  20.     }
  21.         echo  $resultado;
  22.     ?>
  #6 (permalink)  
Antiguo 02/05/2013, 16:03
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Crear array a partir del un bucle FOR

Esta mal planteado porque la suma del tercer arreglo lo haces dentro del primero for, por lo tanto por cada iteración del for estará haciendo una suma...

Debes sacar del for el foreach..
  #7 (permalink)  
Antiguo 02/05/2013, 16:13
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Crear array a partir del un bucle FOR

Cita:
Iniciado por alex1084 Ver Mensaje
Esta mal planteado porque la suma del tercer arreglo lo haces dentro del primero for, por lo tanto por cada iteración del for estará haciendo una suma...

Debes sacar del for el foreach..
tienes razón acá esta bien estructurado
Código PHP:
Ver original
  1. <?php
  2.     $muestra1 = array(2, 4, 7);
  3.     $muestra2 = array(3, 5, 6);
  4.      
  5.     $n = count($muestra1) - 1;
  6.      
  7.     $muestra3=array();
  8.      
  9.     for ( $e = 0 ; $e <= $n ; $e ++) {
  10.      
  11.     $datos = $muestra1[$e] + $muestra2[$e];
  12.      
  13.    $muestra3[$e] = $datos;
  14.     }
  15.     $resultado=0;
  16.    
  17.      foreach ($muestra3 as $valor){
  18.       $array2 = "$valor<br />";
  19.       echo $array2;
  20.      
  21.      $resultado=$resultado+$valor;
  22.        
  23.          }
  24.        
  25.         echo "Totat: ".$resultado."";
  26.     ?>
  #8 (permalink)  
Antiguo 02/05/2013, 16:18
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Crear array a partir del un bucle FOR

Nada mas unas observaciones puedes simplificar el codigo y ahorrar unas lineas que no son necesarias si lo dejas de la siguiente forma

Código php:
Ver original
  1. foreach ($muestra3 as $valor){
  2.      echo $valor."<br />";
  3.      $resultado=$resultado+$valor;
  4. }
  5. echo "Totat: ".$resultado;

No necesitas concatenar comillas vacías al final del
Cita:
echo "Total".$resultado;
  #9 (permalink)  
Antiguo 02/05/2013, 17:21
 
Fecha de Ingreso: abril-2012
Ubicación: Badajoz
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Crear array a partir del un bucle FOR

Chicos, muchas gracias.

Esta es justamente la solución que estaba buscando. Veo que mi problema es que no estoy lo suficientemente familiarizado con los bucles y a veces me cuesta entender toda su lógica. De hecho me ha costado ver como realizabais la suma de la muestra 3, y me parece entender que la habéis realizado recorriendo el array con un foreach.

Me permito preguntar una cosa mas, ¿y si ahora quisiera calcular el tamaño de la muestra 3, como lo haría? El numero de elementos de un array lo podemos calcular con count(array) ¿Cómo lo aplico a este caso?
  #10 (permalink)  
Antiguo 02/05/2013, 18:50
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Crear array a partir del un bucle FOR

Si usa:

Código PHP:
Ver original
  1. $total_muestra3 = count ($muestra3);
  #11 (permalink)  
Antiguo 02/05/2013, 18:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Crear array a partir del un bucle FOR

Sólo unos apuntes:

Código PHP:
Ver original
  1. $n = count($muestra1) - 1;//restar uno es innecesario
  2.      
  3.     for ( $e = 0 ; $e <= $n ; $e ++) {//si en la condición en vez de usar <= usas sólo <
  4.  
  5.  
  6.  
  7.     $n = count($muestra1);
  8.     for ( $e = 0 ; $e < $n ; $e ++) {




Por otra parte, en

Código PHP:
Ver original
  1. for($e=0;$e<count($muestra1);$e++) {


no es recomendable ya que en cada iteración se va a verificar el tamaño (count) del arreglo.

Siendo entonces más recomendable la primer forma

$n = count($muestra1);
for ( $e = 0 ; $e < $n ; $e ++) {


o bien usar foreach
  #12 (permalink)  
Antiguo 02/05/2013, 19:37
 
Fecha de Ingreso: abril-2012
Ubicación: Badajoz
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Crear array a partir del un bucle FOR

Chicos, os estoy muy agradecido por la lección sobre bucles que me estais dando.

Es obvio, además yo mismo lo pedia, muestra3 es es array, una pregunta absurda por mi parte, pero estaba demasiado centrado en el uso de los bucles, y no veía lo evidente.

Por otro lado, restar 1 a los elementos del array, efectivamente, no tiene sentido si pasamos del <= a <. Muchas veces no conocemos o no pensamos las implicaciones de estos detalles y hacemos el código mas complejo para solo consumir mas recursos de manera innecesaria.

Me habéis ayudado un montón en mi primera consulta en este foro.

Mil gracias a todos.

Etiquetas: bucle
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 14:05.