为什么循环真的相等

时间:2015-05-20 11:31:10

标签: php for-loop

当变量相等时,我的for循环为真 为什么我只使用“小于”?

我有一个从mysql打印日期的while循环 $ today_nr是存储在db中的一天。例如:02

现在我想要一个for循环来打印缺少的日期 例如:01,02,03。如果mysql中的第一个记录是04.

所以我用它来循环。但它会回显来自mysql($ today_nr)的“01”和来自$ i

的“1”

PHP

$today_nr = $date->format('d');
$i = 1;

for(;$i < $today_nr; $i++){
  echo $i;
}

完整脚本

https://eval.in/367692
532行

打印 for循环在while循环打印01后打印1。

01 Ons 04:41 13:10 0.50 7.97 -0.03 1.32
1
02 Tor 04:40 13:18 0.50 8.13 0.13 1.33
2
3
4
5
6
07 Tis 04:41 12:58 0.50 7.77 -0.23 1.32
7
08 Ons 04:43 13:08 0.50 7.92 -0.08 1.28

2 个答案:

答案 0 :(得分:1)

这与你所说的不同,在我的情况下,下面的代码与你提供的问题完美无关 它按预期工作:

<?php
$today_date = date('d', time());
// $today_nr = $date->format('d');
$i = 1;

for(;$i < $today_date; $i++){
  echo $i; // result: 12345678910111213141516171819
}

答案 1 :(得分:0)

我解决了这个问题:

<强> PHP

//Loop out dates missing in db
//If $i is bigger than today nr
if($i > $today_nr){
   $i = $today_nr;
}

//Loop out missing days
for(;$today_nr != $i;){

  //Set data about day
  $iDate = $year."-".$selected_month."-".$i;
  $iDate = new DateTime($iDate);
  $iDay = $iDate->format('D');

  //Translate iDay. Eng - Swe
  include('../../../include/translate_days_iDay.php');

  //Echo out table
  echo "<tr>";
  echo "<td class='print_table_text'>".$iDate->format('W')."</td>";
  echo "<td class='print_table_text'>".$iDate->format('d')." ".$iDay."</td>";
  echo "</tr>";

  //Add to i
  $i++;
  //if i is bigger than a month
  if($i > $days_in_month){
    break;
  }
}
//If today and i is equal
if($today_nr == $i){
  $i++;
}