$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循环只运行一次。我需要在循环运行时每次运行第二个while循环。有什么帮助吗?
调试运行如下: 调试 调试 调试 DEBUG2 DEBUG2 DEBUG2
我需要它像这样运行: 调试 调试 调试 DEBUG2 调试 调试 调试 DEBUG2 调试 调试 调试 DEBUG2
答案 0 :(得分:1)
你说的问题是:
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
答案 1 :(得分:1)
$ frmdate是一个简单的PHP timstamp,由mktime()创建。然后,将此时间戳值再次与数据库提取语句创建的 OBJECT 进行比较。时间戳和数据库提取对象永远不能相等,因此您的while循环$iii++
永远不会被触发。
答案 2 :(得分:1)
我觉得你的specificdayoff
表中有时间戳。如果是这种情况,那么您的db_fetch_object
方法将检索具有dayoff
属性的对象。
要访问此内容,您需要使用$data->dayoff
。因此,您需要将if($frmdate==$data)
的条件更改为if($frmdata == $data->dayoff)
在不确切知道db_fetch_object将返回什么的情况下,这是一个猜测。也就是说,我仍然没有完全遵循应该在这里发生的事情,这可能只是你遇到的一些问题之一。