素材牛VIP会员
用php写一个关于获取指定天数的天气情况函数,功能段正常但是一加到for循环就无显示无报错,该怎么解决?
 马***1  分类:PHP代码  人气:1207  回帖:2  发布于6年前 收藏

参考资料:
新浪天气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

 标签:php

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv2 入门
随***0 JAVA开发工程师 6年前#1

for循环条件写错了,应该是 $i<=$k

Lv3 码奴
wj***37 页面重构设计 6年前#2

你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;
?>
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取