Ver Mensaje Individual
  #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, 10 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.