¿Como tratar este string?

  • Autor Autor Ruiz86
  • Fecha de inicio Fecha de inicio
Ruiz86

Ruiz86

Eta
SEO
Verificación en dos pasos activada
PHP:
string(452) "{"coord":{"lon":-3.7,"lat":40.42},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01d"}],"base":"cmc stations","main":{"temp":3.48,"pressure":970.75,"humidity":89,"temp_min":3.48,"temp_max":3.48,"sea_level":1045.79,"grnd_level":970.75},"wind":{"speed":2.51,"deg":25.0029},"clouds":{"all":0},"dt":1454490546,"sys":{"message":0.0029,"country":"ES","sunrise":1454484149,"sunset":1454520912},"id":3117735,"name":"Madrid","cod":200}"

Quiero obtener la variable temp y pressure por ejemplo, me estoy liando mucho y no encuentro la forma jeje.
 
Así:

PHP:
<?php
$json = '{"coord":{"lon":-3.7,"lat":40.42},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01d"}],"base":"cmc stations","main":{"temp":3.48,"pressure":970.75,"humidity":89,"temp_min":3.48,"temp_max":3.48,"sea_level":1045.79,"grnd_level":970.75},"wind":{"speed":2.51,"deg":25.0029},"clouds":{"all":0},"dt":1454490546,"sys":{"message":0.0029,"country":"ES","sunrise":1454484149,"sunset":1454520912},"id":3117735,"name":"Madrid","cod":200}';
$json = json_decode($json);
echo "TEMP: {$json->main->temp} <br>";
echo "PRESSURE: {$json->main->pressure}";
?>

:encouragement::encouragement:
 
Así:

PHP:
<?php
$json = '{"coord":{"lon":-3.7,"lat":40.42},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01d"}],"base":"cmc stations","main":{"temp":3.48,"pressure":970.75,"humidity":89,"temp_min":3.48,"temp_max":3.48,"sea_level":1045.79,"grnd_level":970.75},"wind":{"speed":2.51,"deg":25.0029},"clouds":{"all":0},"dt":1454490546,"sys":{"message":0.0029,"country":"ES","sunrise":1454484149,"sunset":1454520912},"id":3117735,"name":"Madrid","cod":200}';
$json = json_decode($json);
echo "TEMP: {$json->main->temp} <br>";
echo "PRESSURE: {$json->main->pressure}";
?>

:encouragement::encouragement:

Uf.. que fácil cuando sabes cómo hacerlo 🙂 1 hora llevaba, muchas gracias.

- - - Actualizado - - -

Así:

PHP:
<?php
$json = '{"coord":{"lon":-3.7,"lat":40.42},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01d"}],"base":"cmc stations","main":{"temp":3.48,"pressure":970.75,"humidity":89,"temp_min":3.48,"temp_max":3.48,"sea_level":1045.79,"grnd_level":970.75},"wind":{"speed":2.51,"deg":25.0029},"clouds":{"all":0},"dt":1454490546,"sys":{"message":0.0029,"country":"ES","sunrise":1454484149,"sunset":1454520912},"id":3117735,"name":"Madrid","cod":200}';
$json = json_decode($json);
echo "TEMP: {$json->main->temp} <br>";
echo "PRESSURE: {$json->main->pressure}";
?>

:encouragement::encouragement:

Y dentro de weather, description? he probado $json->weather->description; y da error, veo que hay un corchete y pienso que hay que tratarlo de otra forma.
 
Porque weather es un array, prueba con $json->weather['description'].
 
si se te lia mucho aprende a usar expresiones regulares 🙂 nunca esta de mas y te sirve para todo tipo de codigos/textos 🙂 saludos
 
Uf.. que fácil cuando sabes cómo hacerlo 🙂 1 hora llevaba, muchas gracias.

- - - Actualizado - - -



Y dentro de weather, description? he probado $json->weather->description; y da error, veo que hay un corchete y pienso que hay que tratarlo de otra forma.

Como te dijeron, es un array, pero en ese caso sería así:

PHP:
$json->weather[0]->description

- - - Actualizado - - -

si se te lia mucho aprende a usar expresiones regulares 🙂 nunca esta de mas y te sirve para todo tipo de codigos/textos 🙂 saludos

Creo que es más difícil XD
 
Como te dijeron, es un array, pero en ese caso sería así:

PHP:
$json->weather[0]->description

- - - Actualizado - - -



Creo que es más difícil XD

es mas dificil pero si el codigo no fuera json si no un simple string pudiera optar por eso xD, saludos
 
te dejo el codigo que utilizo en la web de uno de mis clientes.

PHP:
$url = "http://api.openweathermap.org/data/2.5/weather?id=3436199&lang=es&appid=*****TuID********"; //genero el json
$string = file_get_contents($url); //obtengo el json
$json = json_decode($string, true); //convierto el json en un array
$temperatura = $json['main']['temp'] - 273.15; //obtengo la temperatura transformandola a ºC ya que me la dan en Kelvin
$humedad = $json['main']['humidity']; //obtengo la humedad

Luego imprimo la variable temperatura y humedad en donde quiero que se muestre con un echo

PD: el json que brinda la web es de la siguiente forma
PHP:
{"coord":{"lon":145.77,"lat":-16.92},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"base":"cmc stations","main":{"temp":301.295,"pressure":1002.44,"humidity":100,"temp_min":301.295,"temp_max":301.295,"sea_level":1016.66,"grnd_level":1002.44},"wind":{"speed":3.91,"deg":297.501},"clouds":{"all":20},"dt":1454616831,"sys":{"message":0.0059,"country":"AU","sunrise":1454530009,"sunset":1454576078},"id":2172797,"name":"Cairns","cod":200}

Saludos HomeGuard
 
Última edición:
Atrás
Arriba