Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Extraer valores de un array dentro de otro array

Estas en el tema de Extraer valores de un array dentro de otro array en el foro de PHP en Foros del Web. Buenos días!! tengo un pequeno problemilla. Trato de acceder a los campos del json que adjunto al final. Mediante un foreach y un for accedo ...
  #1 (permalink)  
Antiguo 29/06/2016, 05:25
 
Fecha de Ingreso: marzo-2015
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Extraer valores de un array dentro de otro array

Buenos días!!

tengo un pequeno problemilla. Trato de acceder a los campos del json que adjunto al final.
Mediante un foreach y un for accedo a los campos de la siguiente forma:

$nombre=$persona[$i][Nombre];
$apellido=$persona[$i][Apellido];
$dni_numero=$persona[$i][dni][numero];
$dni_valido=$persona[$i][dni][valido];

hasta aqui bien, recupero los datos correctamente.

El tema es al tratar de recuperar los siguientes datos:

$futbol=$persona[$i][gustos][futbol];
$esgrima=$persona[$i][gustos][esgrima];
$musica=$persona[$i][gustos][musica];
$cine=$persona[$i][gustos][cine];

Todos estos me devuelven: Array

?como puedo hacer para acceder a los campos de este array?

Muchas gracias!!!


{
"Lista": [
{
"Nombre": "Paco",
"Apellido": "Hernandez",
"dni": {
"numero": "000000000",
"valido": "2056-06-27"
},
"gustos": [{
"deportes": {
"futbol": "Barsa",
"esgrima": "aficionado"
},
"musica": "rock",
"cine": "clasico"
}]
},
{
"Nombre": "Yolanda",
"Apellido": "Perez",
"dni": {
"numero": "000000001",
"valido": "2096-09-10"
},
"gustos": [{
"deportes": {
"futbol": "Betis",
"esgrima": "profesional"
},
"musica": "pop",
"cine": "ficcion"
}]
}]
}
  #2 (permalink)  
Antiguo 29/06/2016, 09:02
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Extraer valores de un array dentro de otro array

Es sencillo
Código PHP:
Ver original
  1. $decode = json_decode('{
  2. "Lista": [
  3. {
  4. "Nombre": "Paco",
  5. "Apellido": "Hernandez",
  6. "dni": {
  7. "numero": "000000000",
  8. "valido": "2056-06-27"
  9. },
  10. "gustos": [{
  11. "deportes": {
  12. "futbol": "Barsa",
  13. "esgrima": "aficionado"
  14. },
  15. "musica": "rock",
  16. "cine": "clasico"
  17. }]
  18. },
  19. {
  20. "Nombre": "Yolanda",
  21. "Apellido": "Perez",
  22. "dni": {
  23. "numero": "000000001",
  24. "valido": "2096-09-10"
  25. },
  26. "gustos": [{
  27. "deportes": {
  28. "futbol": "Betis",
  29. "esgrima": "profesional"
  30. },
  31. "musica": "pop",
  32. "cine": "ficcion"
  33. }]
  34. }]
  35. }');
  36.  
  37. print_r($decode->Lista[0]->gustos[0]->deportes->futbol); //Barsa
Tambien puede cobvertir toda la estructura a arreglos si así lo requieres
Código PHP:
Ver original
  1. $decode = json_decode('{
  2. "Lista": [
  3. {
  4. "Nombre": "Paco",
  5. "Apellido": "Hernandez",
  6. "dni": {
  7. "numero": "000000000",
  8. "valido": "2056-06-27"
  9. },
  10. "gustos": [{
  11. "deportes": {
  12. "futbol": "Barsa",
  13. "esgrima": "aficionado"
  14. },
  15. "musica": "rock",
  16. "cine": "clasico"
  17. }]
  18. },
  19. {
  20. "Nombre": "Yolanda",
  21. "Apellido": "Perez",
  22. "dni": {
  23. "numero": "000000001",
  24. "valido": "2096-09-10"
  25. },
  26. "gustos": [{
  27. "deportes": {
  28. "futbol": "Betis",
  29. "esgrima": "profesional"
  30. },
  31. "musica": "pop",
  32. "cine": "ficcion"
  33. }]
  34. }]
  35. }');
  36.  
  37. print_r($decode->Lista[0]->gustos[0]->deportes->futbol);
  38.  
  39. function objectToArray($element) {
  40.         if (is_object($element)) {
  41.             //convertimos objeto a un arreglo
  42.             $element = (array) $element;
  43.         }
  44.  
  45.         if (is_array($element)) {
  46.             //llamada recusiva
  47.             return array_map(__FUNCTION__, $element);
  48.         }
  49.         else {
  50.             // Regresamos el arreglo
  51.             return $element;
  52.         }
  53.     }
  54.  
  55. $decode_to_array = objectToArray($decode);
  56.  
  57. print_r($decode_to_array['Lista'][0]['gustos'][0]['deportes']['futbol']);
Ya tienes dos opciones, solo queda que implementes la lógica que requieres para tu problema
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 01/07/2016, 02:28
 
Fecha de Ingreso: marzo-2015
Mensajes: 66
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Extraer valores de un array dentro de otro array

Muchas gracias!!

no estaba accediendo correctamente al array, esto me ayudo de mucho:
$decode_to_array['Lista'][0]['gustos'][0]['deportes']['futbol']

Un saludo!!!

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 20:36.