给大家分享一下在做页面显示天气预报功能中遇到的问题和解决方法!!
项目开发中,我用的天气预报API是心知天气的免费接口。关于天气预报接口,可用的有很多,看需求怎么要求了!有兴趣的小伙伴可以链接到这个地址,里面有该接口使用的详细介绍:https://www.seniverse.com/。注意注册登录后才能使用哟!!
废话不多说,下面就来说说我遇到的问题,首先是接口返回数据的问题。调用API返回的数据是json格式,我在使用json_decode()函数转换数据格式后发现,竟然不是纯数组格式,而是对象里面有数组,数组中的元素又是对象!这可把我愁坏了。这样的数据想要获取里面的元素值,实在是有点儿麻烦,因为数据有很多层!
那么问题来了,怎么把json格式的数据完全转换为数组格式呢?
很简单,只需要在json_decode()函数中使用第二个参数,并设置为TRUE就可以了。然后对返回的数组进行多次遍历,得到自己想要的数据。
另一个问题是,CI中使用$this->load->view(‘视图文件‘, $data)。下面使用代码演示:
<?php
public function index(){
$data = [
‘whther‘ = ‘多云‘,
‘high = 22,
‘low‘ = 10
]
$this->load->view(‘视图文件‘, $data);
}
?>
那么在view文件中怎么显示$data中的数据呢?这样写吗?------> <?php echo $data[‘whther‘]?>
要明白该怎么写,首先得清楚PHP在解析变量的过程:视图接收到$data数组后,使用PHP函 数extract()把数组中的每个元素转换成内存变量,数组的键名即为变量名,值为变量内所包含的值!!因此数组中元素的值在视图中是这样被引用的:
<html>
<head>
</head>
<body>
<p class=‘whther‘><?php echo $whther; ?></p>
<p class=‘high‘><?php echo $high; ?></p>
<p class=‘low‘><?php echo $low; ?></p>
</body>
</html>