Foros del Web » Programando para Internet » PHP »

Mostrar datos con un for en array asociativo

Estas en el tema de Mostrar datos con un for en array asociativo en el foro de PHP en Foros del Web. Hola. Estoy haciendo pruebas con un for y un array asociativo. Lo que intento es tener una lista de 10 equipos y a la vez ...
  #1 (permalink)  
Antiguo 09/04/2010, 10:17
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Mostrar datos con un for en array asociativo

Hola.

Estoy haciendo pruebas con un for y un array asociativo.

Lo que intento es tener una lista de 10 equipos y a la vez cada uno con sus puntuaciones correspondientes, hasta aquí todo bien:

Código PHP:
<?php 
$equipos 
= array("R.Madrid"=>77"Barcelona"=>77"Valencia"=>56"Sevilla"=>48"Mallorca"=>48"Atletic"=>45"Villareal"=>43"Deportivo"=>42"Getafe"=>41"Atletico"=>40);
foreach(
$equipos as $lideres=>$puntos) {
    echo 
"$lideres $puntos <br />";}    
    
?>
Suponiendo que solo quiero mostrar los 6 primeros con un for, ¿como sería?

Código PHP:
<?php 
$equipos 
= array("R.Madrid"=>77"Barcelona"=>77"Valencia"=>56"Sevilla"=>48"Mallorca"=>48"Atletic"=>45"Villareal"=>43"Deportivo"=>42"Getafe"=>41"Atletico"=>40);
for (
$i=0$i<7$i++){
    echo 
$equipos[$i] . "<br />";
}
/*foreach($equipos as $lideres=>$puntos) {
    echo "$lideres $puntos <br />";}    
}*/
    
?>
Si le quito => a cada equipo si sale pero claro sin las puntuaciones.

¿Es posible hacer eso con un for?
  #2 (permalink)  
Antiguo 09/04/2010, 10:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Mostrar datos con un for en array asociativo

Si quieres un número especifico de datos en el arreglo usa la función array_slice.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 09/04/2010, 10:21
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Mostrar datos con un for en array asociativo

Código PHP:
Ver original
  1. <?php
  2. $equipos = array("R.Madrid"=>77, "Barcelona"=>77, "Valencia"=>56, "Sevilla"=>48, "Mallorca"=>48, "Atletic"=>45, "Villareal"=>43, "Deportivo"=>42, "Getafe"=>41, "Atletico"=>40);
  3. $contador = 1;
  4. foreach($equipos as $lideres=>$puntos) {
  5.     if(++$contador > 7) break;
  6.     echo "$lideres $puntos <br />";
  7. }
  8. ?>
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 09/04/2010, 10:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Mostrar datos con un for en array asociativo

¿no es mejor usar array_slice?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 09/04/2010, 10:23
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Mostrar datos con un for en array asociativo

No hace falta que lo hagas con for, puedes hacerlo con el mismo foreach que tenias antes, le añades un contador, $i = 0 antes del foreach, y justo al principio del foreach $i++, y antes de que muestre la informacion pones un condicional asi: if($i > 7){ break; }, eso hará que cuando se cumpla la condicion ejecute la sentencia break y finalize la ejecución de ese mismo foreach.

EDIT: Cuantos se me han adelantado xD

EDIT2: Ahora que lo comenta Abimaelrc si pienso que es mejor usar array_slice.

Un saludo
  #6 (permalink)  
Antiguo 09/04/2010, 10:26
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Mostrar datos con un for en array asociativo

Cita:
Iniciado por abimaelrc Ver Mensaje
¿no es mejor usar array_slice?
claro, solo doy otra opcion :P

tambien puede lograrlo en el bucle for usando la funcion
array_keys

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 09/04/2010, 11:34
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Mostrar datos con un for en array asociativo

Cita:
Iniciado por abimaelrc Ver Mensaje
Si quieres un número especifico de datos en el arreglo usa la función array_slice.
Hola abimaelrc, he estado investigando esa función y por ahora lo que he logrado es este resultado:

Array ( [R.Madrid] => 77 [Barcelona] => 77 [Valencia] => 56 [Sevilla] => 48 [Mallorca] => 48 [Atletic] => 45 )

Código PHP:
<?php
$equipos 
= array("R.Madrid"=>77"Barcelona"=>77"Valencia"=>56"Sevilla"=>48"Mallorca"=>48"Atletic"=>45"Villareal"=>43"Deportivo"=>42"Getafe"=>41"Atletico"=>40);
print_r(array_slice($equipos06));
?>
¿Como sería posible obtener este mismo resultado sin que aparezca la palabra Array y todo en linea? Ahí no se como meter un <br /> o si es posible claro...

R.Madrid 77
Barcelona 77
Valencia 56
Sevilla 48
Mallorca 48
Atletic 45

Cita:
Iniciado por Hidek1 Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. $equipos = array("R.Madrid"=>77, "Barcelona"=>77, "Valencia"=>56, "Sevilla"=>48, "Mallorca"=>48, "Atletic"=>45, "Villareal"=>43, "Deportivo"=>42, "Getafe"=>41, "Atletico"=>40);
  3. $contador = 1;
  4. foreach($equipos as $lideres=>$puntos) {
  5.     if(++$contador > 7) break;
  6.     echo "$lideres $puntos <br />";
  7. }
  8. ?>
Cita:
Iniciado por Heli0s Ver Mensaje
No hace falta que lo hagas con for, puedes hacerlo con el mismo foreach que tenias antes, le añades un contador, $i = 0 antes del foreach, y justo al principio del foreach $i++, y antes de que muestre la informacion pones un condicional asi: if($i > 7){ break; }, eso hará que cuando se cumpla la condicion ejecute la sentencia break y finalize la ejecución de ese mismo foreach.

EDIT: Cuantos se me han adelantado xD

EDIT2: Ahora que lo comenta Abimaelrc si pienso que es mejor usar array_slice.

Un saludo
Tal y como decís me sale perfectamente

Cita:
Iniciado por Hidek1 Ver Mensaje
claro, solo doy otra opcion :P

tambien puede lograrlo en el bucle for usando la funcion
array_keys

saludos!
Esta no la he probado todavía.

Gracias a todos por vuestra ayuda, sigo probando
  #8 (permalink)  
Antiguo 09/04/2010, 11:36
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Mostrar datos con un for en array asociativo

Código PHP:
Ver original
  1. <?php
  2. $equipos = array("R.Madrid"=>77, "Barcelona"=>77, "Valencia"=>56, "Sevilla"=>48, "Mallorca"=>48, "Atletic"=>45, "Villareal"=>43, "Deportivo"=>42, "Getafe"=>41, "Atletico"=>40);
  3. $equipos = array_slice($equipos, 0, 6);
  4. foreach($equipos as $lideres=>$puntos) {
  5.     echo "$lideres $puntos <br />";
  6. }
  7. ?>
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 09/04/2010, 11:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Mostrar datos con un for en array asociativo

En ese caso, lo mejor es usar todo en el mismo foreach, para evitar que se recorra lo menos posible el array.
Código PHP:
Ver original
  1. <?php
  2. $equipos = array("R.Madrid"=>77, "Barcelona"=>77, "Valencia"=>56, "Sevilla"=>48, "Mallorca"=>48, "Atletic"=>45, "Villareal"=>43, "Deportivo"=>42, "Getafe"=>41, "Atletico"=>40);
  3. $n=1;
  4. foreach($equipos as $lideres=>$puntos) {
  5.     echo "$lideres $puntos <br />";
  6.     if(++$n > 6){break;}
  7. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 09/04/2010, 11:42
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Mostrar datos con un for en array asociativo

Cita:
Iniciado por abimaelrc Ver Mensaje
En ese caso, lo mejor es usar todo en el mismo foreach, para evitar que se recorra lo menos posible el array.
Código PHP:
Ver original
  1. <?php
  2. $equipos = array("R.Madrid"=>77, "Barcelona"=>77, "Valencia"=>56, "Sevilla"=>48, "Mallorca"=>48, "Atletic"=>45, "Villareal"=>43, "Deportivo"=>42, "Getafe"=>41, "Atletico"=>40);
  3. $n=1;
  4. foreach($equipos as $lideres=>$puntos) {
  5.     echo "$lideres $puntos <br />";
  6.     if(++$n > 6){break;}
  7. }
lo sospeche desde un principio
__________________
More about me...
~ @rhyudek1
~ Github
  #11 (permalink)  
Antiguo 09/04/2010, 11:49
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Mostrar datos con un for en array asociativo

¡Cuantas opciones!

Entonces si mi intención no fuese la de imprimir esos resultados en orden, ¿que sentido tiene la función array_slice?. Supongo que se realizará para problemas más avanzados o extrare algo en concreto para luego usarlo en detarminadas ocaciones.

La verdad estoy retomando el tema (por no decir empezando) con php y al apartado de funciones aun no he llegado, todavía me queda mucho camino por recorrer.

Gracias de nuevo.

Etiquetas: Ninguno
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 17:24.