Rujukan:
Huraian API Cuaca Sina
Huraian ringkas Parameter terakhir hari=0 dalam url mewakili hari ini, jika sama dengan 1, ia mewakili hari berikutnya, dan seterusnya, tetapi nilai maksimum ialah 3.
Sasaran kod:
Cuaca Jinhua
Hari ini xx-xx-xx, Ahad x, cerah hingga mendung pada waktu siang, xxxx pada waktu malam
Ahad x Cerah hingga mendung pada siang hari xxxx pada waktu malam (Hari ke-2)
Ahad x Cerah hingga mendung pada siang hari xxxx pada waktu malam (Hari ke-3)
Ahad x Cerah hingga mendung pada waktu siang dan xxxx pada waktu malam (Hari ke-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;
?>
Tetapi jika anda tidak menambah gelung for dan melaksanakan fungsi itu sebanyak 4 kali, anda boleh mencapainya dengan garisan padat. Kod adalah seperti berikut
<?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;
?>
Keluaran adalah seperti berikut:
Jinhua Cuaca Jumaat Hujan Petir pada siang hari, angin timur tenang, mendung angin timur tenang pada waktu malam Sabtu Hujan petir pada siang hari, angin timur tenang, petang mendung angin timur, tenang n Ahad, mendung angin timur angin timur cerah, tenang n hari isnin cerah, angin timur tenang, petang cerah n
Syarat penghakiman bagi gelung anda adalah salah. Bagaimanakah mungkin untuk menulis $i>$k, dan kemudian biarkan $i++.
Keadaan for loop tersalah tulis, sepatutnya
$i<=$k