參考資料:
新浪天氣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;
?>