• info@oscarperez.es

Archivo de la etiqueta JSON

Recorrer un json desde php

Todos nos hemos visto en algún momento con la necesidad de recorrer un objeto JSON en PHP.

Imaginar que tenemos una consulta a base de datos y lo que nos devuelve la función es un JSON.

Por ejemplo:

[
  {"name":"Madrid","y":"58"},
  {"name":"Granada","y":"21"},
  {"name":"Segovia","y":"12"},
  {"name":"La Rioja","y":"3"},
  {"name":"Toledo","y":"3"}
]

Lo primero que tenemos que hacer para trabajar fácilmente con esta estructura en PHP es decodificar el JSON. Para ello usaremos la función json_decode(). El JSON lo tenemos en una variable, donde hemos recogido el resultado de nuestra función que accede a la base de datos.

$resultados = recuperaInfoDeLaBaseDeDatos(.....); esta función la tenéis que desarrollar vosotros.

Después de ejecutar la función, en nuestra variable $resultados tendríamos guardado el objeto JSON. Algo así sería:

$resultados = [{"name":"Madrid","y":"58"},{"name":"Granada","y":"21"},{"name":"Segovia","y":"12"},{"name":"La Rioja","y":"3"},{"name":"Toledo","y":"3"}]

Aplicamos la función json_decode() a nuestra variable $resultados.

$array = json_decode($resultados, true);

Esta función, según la documentación oficial de PHP, lo que hace es «Convierte un string codificado en JSON a una variable de PHP». Básicamente convierte un JSON en un objeto Array.

Y ahora lo que hacemos es recorrer la variable $array.

foreach ($array as $value) {
   $cadena = "El nombre de la provincia es: '". $value['name'] ."', y su puntuación es: ". $value['y'] ."},";
   print ($cadena);
}

El resultado sería:

El nombre de la provincia es: Madrid, y su puntuación es: 58
El nombre de la provincia es: Granada, y su puntuación es: 21
El nombre de la provincia es: Segovia, y su puntuación es: 12
El nombre de la provincia es: La Rioja, y su puntuación es: 3
El nombre de la provincia es: Toledo, y su puntuación es: 3

El código completo sería:

$resultados = recuperaInfoDeLaBaseDeDatos(.....);
$array = json_decode($resultados);
foreach ($array as $value) {
    $cadena = "El nombre de la provincia es: '". $value['name'] ."', y su puntuación es: ". $value['y'] ."},";
    print ($cadena);
}
1