elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Sumar array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sumar array  (Leído 3,900 veces)
luchi

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Sumar array
« en: 1 Enero 2014, 23:40 pm »

Hola a todos. Estoy aprendiendo PHP y tengo un problema con un array, tengo que sumar sólo los valores que tengan un índice en concreto:
Código:
//éste es el array, debo sumar todos los valores de los índices que sean igual
$poblacion2=array('NY'=>8.008278,
                                   'CA'=>3.694820,
  'IL'=>2.896016,
  'TX'=>1.953631,
  'PA'=>1.517550,
  'AZ'=>1.321045,
  'CA'=>1.223400,
  'TX'=>1.188580,
  'TX'=>1.144464,
  'MI'=>951270);
$texas=0;
foreach($poblacion2 as $clave=>$valor){
/*por ejemplo si el índice es 'TX' que me sume toda la población y me la valla guardando en una variable*/
     if($clave=='TX'){
$texas=$texas+$valor;
}
}
echo $texas;
//El problema esque sólo me saca el último valor por pantalla ni lo suma ni nada

Un saludo.


En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Sumar array
« Respuesta #1 en: 2 Enero 2014, 02:11 am »

Lo que intentas hacer con los arrays en lo mismo que con las variables, por ejemplo..

Código
  1. // Tienes la variable $n;
  2. $n;
  3. // La ponemos un valor;
  4. $n = 1;
  5. // La ponemos un segundo valor;
  6. $n = 3;
  7. // Mostramos $n por pantalla;
  8. echo $n;

Resultado.
Código
  1. N vale 3.

¿Qué ha pasado con el 1? Digamos que lo has sobreescrito y este ha dejado de existir, lo mismo con el array, al tener 3 "TX" 'sobrescribiste' los dos primeros.

Te pronpongo lo siguiete;

Código
  1. <?php
  2. $ciudad = "TX"; // Definimos lo que buscamos.
  3.  
  4. foreach(array("NY"=>8.008278,"CA"=>3.694820,"IL"=>2.896016,
  5.  "TX"=>1.953631,"PA"=>1.517550,"AZ"=>1.321045,
  6.  "MI"=>951270) as $clave1=>$valor1){  
  7.  
  8. // Si $clave1 es igual que lo definido en la variable '$ciudad', almacena el dato correspondiete en la variable $d1;
  9. if ($clave1 === $ciudad){$d1 = $valor1;}}
  10.  
  11.    // Si $clave2 es igual que lo definido en la variable '$ciudad', almacena el dato correspondiete en la variable $d2;
  12. foreach(array("CA"=>1.223400,"TX"=>1.188580) as $clave2=>$valor2){
  13. if ($clave2 === $ciudad){$d2 = $valor2;}}  
  14.  
  15. // Si $clave3 es igual que lo definido en la variable '$ciudad', almacena el dato correspondiete en la variable $d3;
  16. foreach (array("TX"=>1.144464) as $clave3=>$valor3) {
  17.    if ($clave3 === $ciudad){$d3 = $valor3;}}  
  18.  
  19.  
  20.    /* La @ es para omitiar el mensaje de error que te saldrá si alguna variable no está definida
  21.     si lo prefieres puedes cambiarlo y usar empty o isset */
  22.  
  23. $result = @$d1+@$d2+@$d3;
  24.  
  25. // Mostramos el resultado.
  26. echo $result;
  27.  
  28. ?>

El código es muy cutre, y se podría optomizar...

Lo de los '@' como ya metí en la anotación, sirven para omitir los errores que PHP tire, si por ejemplo, solo te interesa PA, pa no existe en el tercer array, entonces la variable $d3, no estará definida, y tendrá un valor NULL, entonces PHP ejecutará el código a la perfección, pero te avisará de que $d3 no está definida, con la '@' delante de la variable, PHP no jode con el aviso.

También puedes usar las funciones isset y empty para comprobar si éstas están definidas. A mí me dio pereza  :silbar: :silbar:

Espero que te sirva (que yo creo que sí)...

Un saludo!


« Última modificación: 2 Enero 2014, 02:24 am por #Aitor » En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Sumar array
« Respuesta #2 en: 2 Enero 2014, 14:11 pm »

Expandiendo un poco mas lo que dijo Aitor al principio... en un array no podes usar la misma clave, el valor de esta se reemplaza por la ultima declarada, mira el array que definiste.

Código
  1. echo '<pre>';
  2. print_r($poblacion2);
  3. echo '<pre>';

Deberias utilizar arrays multidimensionales, para que no se repitan las keys o renombrarlas concatenadas a un numero(ej: TX1, TX2, TX3).
Código
  1. $poblacion2 = array(array('TX'=>1.953631),array('TX'=>1.188580),array('TX'=>1.144464));
  2. $poblacion2 = array('TX1'=>1.953631,'TX2'=>1.188580,'TX3'=>1.144464);
En línea

luchi

Desconectado Desconectado

Mensajes: 71


Ver Perfil
Re: Sumar array
« Respuesta #3 en: 2 Enero 2014, 23:39 pm »

Muchísimas gracias a los dos: finalmente utilicé un array multidimensional para no renombrar las keys y gracias a #Aitor comprendí el origen del problema al instante (por cierto me gusta "Tu algoritmo" ;)).
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sumar horas
Programación Visual Basic
mdg 1 2,298 Último mensaje 2 Diciembre 2007, 15:56 pm
por Tughack
Copiar parte de una array a otra array
Programación Visual Basic
sircid 3 5,051 Último mensaje 19 Diciembre 2007, 11:27 am
por LeandroA
Sumar eax i ebx
ASM
E.P.I. 8 6,675 Último mensaje 26 Marzo 2010, 22:45 pm
por [Zero]
Convertir Array de php a Array de javascript
PHP
WHK 0 4,338 Último mensaje 23 Enero 2012, 18:05 pm
por WHK
[Ruby] Sumar elementos de un array
Scripting
ka0s 2 8,565 Último mensaje 25 Noviembre 2013, 20:32 pm
por ka0s
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines