<div>
<img src="foo.jpg">
<p>
<span>bar</span>
</p>
</div>
它正在加载,加载和加载,因为$time = time();
$foo = array(
1448319600 => array(
array(
'foo' => 'bar'
),
array(
'bar' => 'foo'
)
),
1448578800 => array(
array(
'foo2' => 'bar2'
),
array(
'bar2' => 'foo2'
)
)
);
function bar($time, $foo) {
$count = 0;
do {
$count++;
$time = strtotime('+1 day', $time);
} while (isset($foo[$time]) === false);
return array(
'count' => $count,
'foo' => $foo[$time]
);
}
bar($time, $foo);
似乎总是如此。我只是找不到错误。
(还有一些文字可以提交。还有一些文字可以提交。还有一些文字可以提交。)
答案 0 :(得分:3)
strtotime('+1day')
将使用&#34;现在&#34; ,例如下午3:35作为基准时间,所以你做的相当于
$now = time(); // 1448400979
$tomorrow = strtotime('+1 day', $now); // 1448487379
while(!isset($arr[$tomorrow])) { ... }
由于该值很可能不会作为键存在于您的数组中,因此您的循环永远不会结束。您需要执行&gt; =比较或其他操作,以检查当前正在考虑的日期何时变得比数组中的任何键都大。
答案 1 :(得分:1)
在脚本开始时,您将时间设置为当前时间。然后在do while循环中,每次循环时将时间增加一天。 isset($foo[time]) === false
只会在Mon, 23 Nov 2015 23:00:00 +0000
或Thu, 26 Nov 2015 23:00:00 +0000
之前的某个时间恰好晚上11点开始时返回false并退出循环。
撰写这篇文章的时间戳示例是1448401349如果我添加一天,我会得到1448487749。
您可能希望将时间戳四舍五入到午夜,以确保在循环中出现允许其退出的冲突。 unix timestamp round to midnight