繁体   English   中英

如何将PHP循环分为两部分?

[英]How to split a PHP loop in 2 parts?

我有一个天气json,从那里可以得到8天的天气预报。 我的问题是我想在每4天2行的表中显示结果。
我设法做到了,但是以一种非常奇怪的方式,在尝试尝试错误的过程中,纯属初学者的运气:-)我什至不十分清楚为什么将结果分成两行...但是它有效! 我唯一不能做的就是在两行之间加入“ hr”行,以使表更易于阅读。
您可以在这里查看结果http://www.meteocaldas.com/previsao_ds.php
使用当前代码,我将使用“ br”在不同行中的同一“ td”内显示每天的预测值。 我一直在阅读,在“ td”中使用“ br”是不正确的,因此我不确定自己是否在做严格的事情。
使用具有4列(每天一列)并且每个值具有不同行的表会更好吗? 是否有任何方法可以重写此代码以使其更高效并且看起来更“幼稚”? :-) 提前致谢!

<?php
     (...)
 $decoded = json_decode($rawData, true); 
?>
 <table>
<?php for($k=0;$k<8;$k++){ 
$dailyvalue = $decoded['daily']['data'][$k];

    $dailyTime = $dailyvalue['time'];
$dailyIcon = $dailyvalue['icon'];
$dailyTempMax = round($dailyvalue['temperatureMax'],0); 
$dailyTempMin = round($dailyvalue['temperatureMin'],0);
      (...)
 ?> 

  <!-- table for 8 day's forecast (2 rows/4 days each) -->
<td>
<?php echo strftime("%a %d",$dailyTime) ?>
 <br>
<?php echo '<img src="path/'.$dailyIcon.'.png">' ?>
 <br>
<?php echo $dailyTempMin.'º' ?> </span>
 <br>
 <?php echo $dailyTempMax.'º' ?></span>
  <br>
        (...)   

 <?php if ($k == 3) {
    echo '</td></tr>';    
  } ?>

 <?php
}
 ?>
</td></tr><table>

为什么不简单地将两个不同的表彼此堆叠呢?

根据您的注释请求,以下是基于上面的代码的一些示例伪代码:

<?php
    (...)
$decoded = json_decode($rawData, true); 
for($k=0;$k<8;$k++){ 
    $dailyvalue = $decoded['daily']['data'][$k];

    $dailyTime[$k] = $dailyvalue['time'];
    $dailyIcon[$k] = $dailyvalue['icon'];
    $dailyTempMax[$k] = round($dailyvalue['temperatureMax'],0); 
    $dailyTempMin[$k] = round($dailyvalue['temperatureMin'],0);
}

?>
<table>
<?php
echo "<tr>";
for($k = 0; $k <= 3; $k++){
    echo "<td>".strftime("%a %d",$dailyTime[$k])."</td>"; // this will make the "datetime" row
}
echo "</tr><tr>";
for($k = 0; $k <= 3; $k++){
    echo "<td><img src=path/".$dailyIcon[$k].".png></td>"; // this will make the "icon" row
}
echo "</tr><tr>";
for($k = 0; $k <= 3; $k++){
    echo "<td>".$dailyTempMin[$k]."º</td>"; // this will make the "MinTemp" row
}
echo "</tr><tr>";
for($k = 0; $k <= 3; $k++){
    echo "<td>".$dailyTempMax[$k]."º</td>"; // this will make the "MaxTemp" row
}
echo "</tr>";
// put stuff you want between the tables here
echo "<tr>";
for($k = 4; $k <= 7; $k++){
     // proceed to do the same as above

请注意,还有其他方法可以减少屏幕混乱(例如将循环的表格绘制移动到函数中),但这是它的基本要点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM