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

时间:2019-02-11 17:12:36

标签: php

我有一个天气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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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