[英]PHP: While loop condition
$result= db_query("SELECT dayoff FROM specificdayoff");
$node->frmdate = mktime(0,0,0, $node->frmdate['month'], $node->frmdate['day'],$node->frmdate['year']);
$node->todate = mktime(0,0,0, $node->todate['month'], $node->todate['day'],$node->todate['year']);
$node->dayoff = mktime(0,0,0, $node->dayoff['month'], $node->dayoff['day'],$node->dayoff['year']);
$data = $node->dayoff;
$frmdate = $node->frmdate;
$todate = $node->todate;
$iii=0;
while($frmdate!=$todate)
{
while($data= db_fetch_object($result))
{
if($frmdate==$data)
{
$iii++;
//debug
}
}
$frmdate=mktime(0, 0, 0, date("m", $frmdate), date("d", $frmdate)+1, date("Y", $frmdate));
//debug2
}
$diff=$iii
我需要的所有元素$frmdate
与所有元素相比较$data
。 但是,当我运行这段代码时, $diff
继续返回0。这意味着,我的if语句出了点问题,但是我似乎无法弄清楚它到底出了什么问题。
当我调试此代码块时,两个while循环都没有按我的要求运行。 第二个while循环仅运行一次。 我需要第2个while循环在每次第1个while循环运行时运行。 任何帮助?
这样的调试运行:debug debug debug debug2 debug2 debug2
我需要它像这样运行:调试调试调试debug2调试调试调试debug2调试调试调试debug2
您说的问题是这样的:
while($data= db_fetch_object($result))
发生的事情是,在循环运行一次之后,您将获取所有结果,因此一无所有。 再次执行循环,仍然没有结果,因为您已经获取了所有结果。 您需要再次设置$result
。 您没有包括此代码,而是寻找类似于$result = ...
。
像这样的东西:
$node->frmdate = mktime(0,0,0, $node->frmdate['month'], $node->frmdate['day'],$node->frmdate['year']);
$node->todate = mktime(0,0,0, $node->todate['month'], $node->todate['day'],$node->todate['year']);
$node->dayoff = mktime(0,0,0, $node->dayoff['month'], $node->dayoff['day'],$node->dayoff['year']);
$data = $node->dayoff;
$frmdate = $node->frmdate;
$todate = $node->todate;
$iii=0;
while($frmdate!=$todate)
{
$result= db_query("SELECT dayoff FROM specificdayoff");
while($data= db_fetch_object($result))
{
if($frmdate==$data)
{
$iii++;
}
}
$frmdate=mktime(0, 0, 0, date("m", $frmdate), date("d", $frmdate)+1, date("Y", $frmdate));
}
$diff=$iii
$ frmdate是一个简单的PHP timstamp,由mktime()创建。 然后,您可以再次比较该时间戳记值,再比较由数据库访存语句创建的对象 。 时间戳和数据库获取对象永远不会相等,因此while循环的$iii++
永远不会被触发。
我感觉到您的specificdayoff
休假表中有时间戳记。 如果是这种情况,则您的db_fetch_object
方法将检索具有dayoff
属性的对象。
要访问它,您可以使用$data->dayoff
。 因此,您需要将if($frmdate==$data)
的条件更改为if($frmdata == $data->dayoff)
所有这些都是在不完全知道db_fetch_object将返回什么的情况下进行的。 就是说,我仍然不完全了解这里应该发生的情况,这可能只是您遇到的一些问题之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.