参考资料:
新浪天气api说明
简要说明 url中的最后一个参数day=0代表今天,如果等于1就代表第二天,以此类推,但是最大值为3.
代码目标:
金华天气
今天xx-xx-xx 星期x 白天晴转多云 晚上xxxx
星期x 白天晴转多云 晚上xxxx (第2天)
星期x 白天晴转多云 晚上xxxx(第3天)
星期x 白天晴转多云 晚上xxxx(第4天)
<?php
function get_weather($k=3){
$arr = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六','星期日','星期一','星期二');
$week=date('w');
$arrfeng=array('无风','软风','轻风','微风','和风','轻劲风','强风','疾风','大风','烈风','狂风','暴风','台风','风王之王');
$winfo='金华天气';
for ($i=0; $i>$k ; $i++) {
$url='http://php.weather.sina.com.cn/xml.php?city=%bd%f0%bb%aa&password=DJOYnieT8234jlsK&day='.$i;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$outobj=simplexml_load_string($output);
$a=$outobj->Weather;
//为了方便拼接字符串
$b=$a->status1;//天气情况1代表白天
$c=$a->status2;//天气情况2代表晚上
$d=$a->direction1;//白天风向
$e=$a->direction2;//晚上风向
$dd=$a->power1;//白天风级数
$ee=$a->power2;//晚上风级数
if($c=="")$c=$b;//解决 当晚上和白天 天气一样时 变量ee值为空
//$winfo='金华天气'
$winfo.= $arr[$week+$k].'白天'.$b.$d.$arrfeng[intval($dd)].'晚上'.$c.$e.$arrfeng[intval($ee)].'\n';
}
return $winfo;
}
$str=get_weather(3);
echo $str;
?>
但是如果不加for循环,执行4次函数就可以实线就可以实现。代码如下
<?php
function get_weather($i){
$arr = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六','星期日','星期一','星期二');
$week=date('w');
$arrfeng=array('无风','软风','轻风','微风','和风','轻劲风','强风','疾风','大风','烈风','狂风','暴风','台风','风王之王');
$winfo=' ';
$url='http://php.weather.sina.com.cn/xml.php?city=%bd%f0%bb%aa&password=DJOYnieT8234jlsK&day='.$i;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$outobj=simplexml_load_string($output);
$a=$outobj->Weather;
//为了方便拼接字符串
$b=$a->status1;//天气情况1代表白天
$c=$a->status2;//天气情况2代表晚上
$d=$a->direction1;//白天风向
$e=$a->direction2;//晚上风向
$dd=$a->power1;//白天风级数
$ee=$a->power2;//晚上风级数
if($c=="")$c=$b;//解决 当晚上和白天 天气一样时 变量ee值为空
//$winfo='金华天气';原本在这里(每循环一次就被清空一次这是错误的)
$winfo.= $arr[$week+$i].'白天'.$b.$d.$arrfeng[intval($dd)].'晚上'.$c.$e.$arrfeng[intval($ee)].'\n';
return $winfo;
}
$str0=get_weather(0);
$str1=get_weather(1);
$str2=get_weather(2);
$str3=get_weather(3);
echo '金华天气'.$str0.$str1.$str2.$str3;
?>
输出如下:
金华天气 星期五白天雷阵雨东风无风晚上多云东风无风n 星期六白天雷阵雨东风无风晚上多云东风无风n 星期日白天多云东风无风晚上晴东风无风n 星期一白天晴东风无风晚上晴无风n
阿神2017-07-03 11:42:37
你for循环的判断条件不对啊。怎么可能写成$i>$k,再让$i++的。
<?php
function get_weather($k=3){
$arr = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六','星期日','星期一','星期二');
$week=date('w');
$arrfeng=array('无风','软风','轻风','微风','和风','轻劲风','强风','疾风','大风','烈风','狂风','暴风','台风','风王之王');
$winfo='金华天气';
for ($i=0; $i<=$k ; $i++) {
$url='http://php.weather.sina.com.cn/xml.php?city=%bd%f0%bb%aa&password=DJOYnieT8234jlsK&day='.$i;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$outobj=simplexml_load_string($output);
$a=$outobj->Weather;
//为了方便拼接字符串
$b=$a->status1;//天气情况1代表白天
$c=$a->status2;//天气情况2代表晚上
$d=$a->direction1;//白天风向
$e=$a->direction2;//晚上风向
$dd=$a->power1;//白天风级数
$ee=$a->power2;//晚上风级数
if($c=="")$c=$b;//解决 当晚上和白天 天气一样时 变量ee值为空
//$winfo='金华天气'
$winfo.= $arr[$week+$k].'白天'.$b.$d.$arrfeng[intval($dd)].'晚上'.$c.$e.$arrfeng[intval($ee)].'\n';
}
return $winfo;
}
$str=get_weather(3);
echo $str;
?>