Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数不';没有结束_Php_Timeout_Do While - Fatal编程技术网

Php 函数不';没有结束

Php 函数不';没有结束,php,timeout,do-while,Php,Timeout,Do While,它在加载,加载,加载,因为isset($foo[$time])===false似乎总是正确的。我就是找不到错误 (更多的文本可以提交。更多的文本可以提交。更多的文本可以提交。)strotime(“+1day”)将使用“now”,例如下午3:35作为基准时间,因此您将执行与 $time = time(); $foo = array( 1448319600 => array( array( 'foo' => 'bar' )

它在加载,加载,加载,因为
isset($foo[$time])===false
似乎总是正确的。我就是找不到错误

(更多的文本可以提交。更多的文本可以提交。更多的文本可以提交。)

strotime(“+1day”)
将使用“now”,例如下午3:35作为基准时间,因此您将执行与

$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);
由于该值不太可能作为键出现在数组中,因此循环永远不会结束。您需要执行>=比较或其他操作,以检查当前正在考虑的日期何时大于数组中的任何键。

strotime(“+1day”)
将使用“now”(现在),例如下午3:35作为基准时间,因此您正在执行与

$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);

由于该值不太可能作为键出现在数组中,因此循环永远不会结束。您需要执行>=比较或其他操作,以检查当前正在考虑的日期何时大于数组中的任何键。

在脚本开始时,您将时间设置为当前时间。然后在do-while循环中,每次循环时,您都将时间增加一天<当您的时间在2015年11月23日星期一23:00:00+0000或2015年11月26日星期四23:00:00+0000之前的某个晚上11点开始时,code>isset($foo[time])====false将只返回false并退出循环

例如,写这篇文章时的时间戳是1448401349,如果加上一天,我会得到1448487749


您可能希望将时间戳舍入到午夜,以确保循环中出现允许其退出的冲突

在脚本开始时,您将时间设置为当前时间。然后在do-while循环中,每次循环时,您都将时间增加一天<当您的时间在2015年11月23日星期一23:00:00+0000或2015年11月26日星期四23:00:00+0000之前的某个晚上11点开始时,code>isset($foo[time])====false将只返回false并退出循环

例如,写这篇文章时的时间戳是1448401349,如果加上一天,我会得到1448487749


您可能希望将时间戳舍入到午夜,以确保循环中出现允许其退出的冲突

在我看来,这当然取决于第一次执行
bar
时指定的
start值。因为您总是添加
1天
,解析为
86400秒
,并且您指定的时间戳是
11/26/2015
11/25/2015
,都是在
11:00 pm
。所以如果你用一个不同于晚上11点的
bar
$time
的首字母来调用
bar
,它当然不起作用。实际上,
1448319600
应该表示
11/24/2015 00:00
1448578800
应该表示
11/27/2015 00:00
。在我看来,这当然取决于第一次执行
bar
时指定的
起始值。因为您总是添加
1天
,解析为
86400秒
,并且您指定的时间戳是
11/26/2015
11/25/2015
,都是在
11:00 pm
。所以如果你用一个不同于晚上11点的
bar
$time
的首字母来调用
bar
,它当然不起作用。实际上,
1448319600
应表示
11/24/2015 00:00
1448578800
应表示
11/27/2015 00:00
。但他将首字母指定为
strotime
的参数,对吗?是的,但它是
time()
,因此实际上总是“现在”,然后添加一个固定的86400(1天的秒)每一次。数组中只有两个时间点,使用半随机time()值命中其中任何一个的几率都不大。这有点像循环
$i=0,2,4,6等等..
。我想知道为什么它没有停止,因为你正在测试
$i=5
,这从来没有发生过哈哈哈-确切地说,我没有抓住代码的第一行:D我已经怀疑(并评论)这可能是一个原因:-)给了你一票;-)非常感谢。使用
$time=strotime('today')
它可以工作。:)但他将初始值指定为
strotime
,对吗?是的,但它是
time()
,因此有效地总是“现在”,然后每次添加一个固定的86400(相当于1天的秒)。数组中只有两个时间点,使用半随机time()值命中其中任何一个的几率都不大。这有点像循环
$i=0,2,4,6等等..
。我想知道为什么它没有停止,因为你正在测试
$i=5
,这从来没有发生过哈哈哈-确切地说,我没有抓住代码的第一行:D我已经怀疑(并评论)这可能是一个原因:-)给了你一票;-)非常感谢。使用
$time=strotime('today')
它可以工作。:)