简体   繁体   English

从 json 中的子行中删除方括号

[英]Remove square brackets from child rows in json

I am trying to display the following data on a website:-我正在尝试在网站上显示以下数据:-

"daily":[{"dt":1593864000,"sunrise":1593834201,"sunset":1593894929,"temp":{"day":18.47,"min":17.83,"max":18.71,"night":17.83,"eve":18.71,"morn":18.47},"feels_like":{"day":16,"night":13.09,"eve":16.54,"morn":16},"pressure":1006,"humidity":77,"dew_point":14.37,"wind_speed":5.51,"wind_deg":244,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":90,"uvi":7.08}

I extract any of the entries except the ones in the weather section as the code I'm using thinks that the weather data is a separate array.我提取除了天气部分中的条目之外的任何条目,因为我使用的代码认为天气数据是一个单独的数组。

The section of code relevant to displaying the data is:-与显示数据相关的代码部分是:-

<span class="min-temperature">&nbsp;Minimum Temperature&nbsp;<?php echo $data->daily[0]->clouds; ?>&deg;C</span><br>
  <span class="min-temperature">&nbsp;Pressure&nbsp;<?php echo $data->daily[0]->weather->id; ?></span>

The first line displays data fine but anything within the weather section fails to display anything.第一行显示数据很好,但天气部分中的任何内容都无法显示任何内容。

I've seen solutions to remove all the square brackets but its only the brackets surrounding the weather section that is needed.我已经看到了删除所有方括号的解决方案,但它只需要围绕天气部分的括号。

Thanks in advance提前致谢

the code below json_decodes and echoes cloud and the weather array. json_decodes 下面的代码与云和天气数组相呼应。 'hope it helps. '希望能帮助到你。 please comment.请评论。 thank you.谢谢你。

<?php 

$data=json_decode( '{"daily":{"dt":1593864000,"sunrise":1593834201,"sunset":1593894929,"temp":{"day":18.47,"min":17.83,"max":18.71,"night":17.83,"eve":18.71,"morn":18.47},"feels_like":{"day":16,"night":13.09,"eve":16.54,"morn":16},"pressure":1006,"humidity":77,"dew_point":14.37,"wind_speed":5.51,"wind_deg":244,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":90,"uvi":7.08}}'); # define $data as a stdClass Object
echo $data->daily->clouds;
echo "\n";

# below, weather array is converted into a string
$wa=(array)$data->daily->weather[0];
foreach($wa as $key=> $val){
    echo $key."=".$val."; ";
}

?>

Output: Output:

90
id=500; main=Rain; description=light rain; icon=10d; 

(请注意,这是假设编辑后的 json 数据与最初预期的一致。或者请告知。谢谢。)

You must use json_decode in this case to convert a json string to associative array.在这种情况下,您必须使用json_decode将 json 字符串转换为关联数组。

$data = '{"daily":{"dt":1593864000,"sunrise":1593834201,"sunset":1593894929,"temp":{"day":18.47,"min":17.83,"max":18.71,"night":17.83,"eve":18.71,"morn":18.47},"feels_like":{"day":16,"night":13.09,"eve":16.54,"morn":16},"pressure":1006,"humidity":77,"dew_point":14.37,"wind_speed":5.51,"wind_deg":244,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":90,"uvi":7.08}}';
$decode = json_decode($data,true);
echo '<pre>';
//print_r($decode);
echo $decode['daily']['clouds'].'<br>';
echo $decode['daily']['uvi'].'<br>';

echo $decode['daily']['weather'][0]['id'].'<br>';
echo $decode['daily']['weather'][0]['main'].'<br>';  //These three are from weather array. 
echo $decode['daily']['weather'][0]['description'].'<br>';
echo '<pre>';

Output Output

90
7.08
500
Rain
light rain

If you want to know how the array indexes works you can make use of print_r from the code just remove it from comments.如果您想知道数组索引是如何工作的,您可以从代码中使用print_r ,只需将其从注释中删除即可。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM