suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden Sie PHP, um eine Funktion zum Abrufen der Wetterbedingungen für eine bestimmte Anzahl von Tagen zu schreiben. Wenn sie jedoch zur for-Schleife hinzugefügt wird, erfolgt keine Anzeige oder Fehlermeldung.

Referenz:
Sina Weather API-Beschreibung
Kurze Beschreibung Der letzte Parameter Tag = 0 in der URL stellt den heutigen Tag dar. Wenn er gleich 1 ist, stellt er den nächsten Tag usw. dar, aber der Maximalwert ist 3.

Codeziel:

Jinhua-Wetter

Heute xx-xx-xx, Sonntag x, tagsüber sonnig bis bewölkt, nachts xxxx

Sonntag x Tagsüber sonnig bis bewölkt xxxx nachts (Tag 2)

Sonntag x Tagsüber sonnig bis bewölkt xxxx nachts (Tag 3)

Sonntag x Tagsüber sonnig bis bewölkt und nachts xxxx (Tag 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;
?>

Aber wenn Sie keine for-Schleife hinzufügen und die Funktion viermal ausführen, können Sie dies mit einer durchgezogenen Linie erreichen. Der Code lautet wie folgt

<?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;
?>

Die Ausgabe ist wie folgt:

Jinhua-Wetter Freitag Gewitterschauer tagsüber, Ostwind ruhig, bewölkt, Ostwind ruhig, abends Samstag Gewitterschauer tagsüber, Ostwind ruhig, abends bewölkt, Ostwind ruhig, Sonntag, tagsüber bewölkt, Ostwind ruhig, abends klarer Ostwind, ruhig n. Montag tagsüber sonnig, Ostwind ruhig, abends klar und windstill

女神的闺蜜爱上我女神的闺蜜爱上我2707 Tage vor875

Antworte allen(2)Ich werde antworten

  • 阿神

    阿神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;
    ?>

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-03 11:42:37

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

    Antwort
    0
  • StornierenAntwort