Référence :
Description de l'API Sina Weather
Brève description Le dernier paramètre day=0 dans l'url représente aujourd'hui, s'il est égal à 1, il représente le jour suivant, et ainsi de suite, mais la valeur maximale est 3.
Cible du code :
Météo Jinhua
Aujourd'hui xx-xx-xx, dimanche x, ensoleillé à nuageux le jour, xxxx la nuit
Dimanche x Ensoleillé à nuageux pendant la journée xxxx la nuit (Jour 2)
Dimanche x Ensoleillé à nuageux pendant la journée xxxx la nuit (Jour 3)
Dimanche x Ensoleillé à nuageux le jour et xxxx la nuit (Jour 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;
?>
Mais si vous n'ajoutez pas de boucle for et exécutez la fonction 4 fois, vous pouvez y parvenir avec une ligne continue. Le code est le suivant
<?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;
?>
Le résultat est le suivant :
Jinhua Météo vendredi Averses d'orage pendant la journée, vent d'est calme, vent d'est nuageux calme la nuit samedi Averses d'orage pendant la journée, vent d'est calme, soir vent d'est nuageux, calme n. dimanche, nuageux pendant la journée, vent d'est calme, soir. vent d'est clair, calme n. Lundi ensoleillé en journée, vent d'est calme, soirée claire et calme n
.
La condition de jugement de votre boucle for est fausse. Comment est-il possible d'écrire $i>$k, puis de laisser $i++.
La condition de la boucle for est mal écrite, elle devrait l'être
$i<=$k