Foros del Web » Programando para Internet » PHP »

Recorrido arrays

Estas en el tema de Recorrido arrays en el foro de PHP en Foros del Web. Hola. ¿Como puedo reccorer este array?. Cuando lo intento hacer de esta forma me sale "undefined offset line 29". @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original ...
  #1 (permalink)  
Antiguo 29/01/2016, 05:19
 
Fecha de Ingreso: mayo-2015
Mensajes: 30
Antigüedad: 9 años, 6 meses
Puntos: 0
Recorrido arrays

Hola.

¿Como puedo reccorer este array?.

Cuando lo intento hacer de esta forma me sale "undefined offset line 29".

Código PHP:
Ver original
  1. <?php
  2.  
  3. $idioma1='ingles';
  4. $idioma2='frances';
  5. $idioma3='aleman';
  6. $idioma4='ruso';
  7.  
  8. $nivel1='Basico';
  9. $nivel2='Medio';
  10. $nivel3='Perfeccionamiento';
  11.  
  12.  
  13. $numeroAlumnos[$nivel1][$idioma1] = 1;
  14. $numeroAlumnos[$nivel1][$idioma2] = 14;
  15. $numeroAlumnos[$nivel1][$idioma3] = 8;
  16. $numeroAlumnos[$nivel1][$idioma4] = 3;
  17. $numeroAlumnos[$nivel2][$idioma1] = 6;
  18. $numeroAlumnos[$nivel2][$idioma2] = 19;
  19. $numeroAlumnos[$nivel2][$idioma3] = 7;
  20. $numeroAlumnos[$nivel2][$idioma4] = 2;
  21. $numeroAlumnos[$nivel3][$idioma1] = 3;
  22. $numeroAlumnos[$nivel3][$idioma2] = 13;
  23. $numeroAlumnos[$nivel3][$idioma3] = 4;
  24. $numeroAlumnos[$nivel3][$idioma4] = 1;
  25.  
  26.  
  27. for($i=0;$i<count($numeroAlumnos);$i++) {
  28.  
  29. for($j=0;$j<count($numeroAlumnos[$i]);$j++) {
  30.  
  31. echo $numeroAlumnos[$i][$j].'<br />';
  32.  
  33. }
  34.  
  35. }
  36.  
  37. ?>

De esta forma sí me funciona sin problemas.

Código PHP:
Ver original
  1. $numeroAlumnos[0][1] = 1;
  2. $numeroAlumnos[0][2] = 14;

Saludos.

Última edición por dbzbr; 29/01/2016 a las 05:41
  #2 (permalink)  
Antiguo 29/01/2016, 11:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Recorrido arrays

Si los índices son numéricos entonces es correcto usar un for() pues $i es un número.

El problema es que cambiaste los números por texto y entonces el for() ya no sirve porque obviamente $i jamás va a ser texto.

Lo correcto en su lugar sería usar foreach() dos veces:
Código PHP:
Ver original
  1. foreach($numeroAlumnos as $nivel => $niveles) {
  2.   foreach ($niveles as $idioma => $id) {
  3.     echo "$nivel - $idioma - $id\n";
  4.   }
  5. }
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/01/2016, 11:51
 
Fecha de Ingreso: mayo-2015
Mensajes: 30
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Recorrido arrays

Cita:
Iniciado por pateketrueke Ver Mensaje
Si los índices son numéricos entonces es correcto usar un for() pues $i es un número.

El problema es que cambiaste los números por texto y entonces el for() ya no sirve porque obviamente $i jamás va a ser texto.

Lo correcto en su lugar sería usar foreach() dos veces:
Código PHP:
Ver original
  1. foreach($numeroAlumnos as $nivel => $niveles) {
  2.   foreach ($niveles as $idioma => $id) {
  3.     echo "$nivel - $idioma - $id\n";
  4.   }
  5. }
Muchas gracias por contestar.

¿Con for no hay ninguna manera de hacerlo por lo que comentas no?

Saludos.
  #4 (permalink)  
Antiguo 29/01/2016, 11:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Recorrido arrays

Cita:
¿Con for no hay ninguna manera de hacerlo por lo que comentas no?
Es justo lo que te acabo de decir, los for() funcionan con números.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/01/2016, 19:10
 
Fecha de Ingreso: julio-2011
Ubicación: Los Rios
Mensajes: 145
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: Recorrido arrays

si deseas necesariamente hacerlo con for podrias transformar $i en numero con
Código PHP:
Ver original
  1. $i=intval($i)
__________________
___________________________
Si te ayudo mi respuesta dale al +1
  #6 (permalink)  
Antiguo 29/01/2016, 19:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Recorrido arrays

Cita:
Iniciado por juancaalbarracin Ver Mensaje
si deseas necesariamente hacerlo con for podrias transformar $i en numero con
Código PHP:
Ver original
  1. $i=intval($i)
Creo que tu tampoco has entendido la diferencia.

El problema es que los índices son 'ingles', o 'Medio', así que no puedes decir "convierte $i en un número" y esperar a que magicamente funcione.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 29/01/2016, 20:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Recorrido arrays

Como para que se entienda un poquitín más claro lo que está explicando pateketrueke, si haces un simple
Código PHP:
Ver original
  1. var_dump($numeroAlumnos);
obtienes esto:
Código PHP:
Ver original
  1. array(3) {
  2.   ["Basico"]=>
  3.   array(4) {
  4.     ["ingles"]=>
  5.     int(1)
  6.     ["frances"]=>
  7.     int(14)
  8.     ["aleman"]=>
  9.     int(8)
  10.     ["ruso"]=>
  11.     int(3)
  12.   }
  13.   ["Medio"]=>
  14.   array(4) {
  15.     ["ingles"]=>
  16.     int(6)
  17.     ["frances"]=>
  18.     int(19)
  19.     ["aleman"]=>
  20.     int(7)
  21.     ["ruso"]=>
  22.     int(2)
  23.   }
  24.   ["Perfeccionamiento"]=>
  25.   array(4) {
  26.     ["ingles"]=>
  27.     int(3)
  28.     ["frances"]=>
  29.     int(13)
  30.     ["aleman"]=>
  31.     int(4)
  32.     ["ruso"]=>
  33.     int(1)
  34.   }
  35. }

Obviamente no existen indices numéricos que puedas usar en un contador de un for(). Las keys son todas alfanuméricas.
¿Queda claro?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 30/01/2016, 11:52
 
Fecha de Ingreso: julio-2011
Ubicación: Los Rios
Mensajes: 145
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: Recorrido arrays

Cita:
Iniciado por pateketrueke Ver Mensaje
Creo que tu tampoco has entendido la diferencia.

El problema es que los índices son 'ingles', o 'Medio', así que no puedes decir "convierte $i en un número" y esperar a que magicamente funcione.
Toda la razón #pateketrueke me marié por el for del ejemplo inicial sin haber visto los indices anteriores. acepto mi error
__________________
___________________________
Si te ayudo mi respuesta dale al +1

Etiquetas: arrays, recorrido
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 13:19.