range()在使用date_diff时发出警告

时间:2010-08-25 15:25:32

标签: php

以下脚本发出了一个问题 '警告:range()[function.range]:步骤超出''中的指定范围 仅在调用date_diff函数时。有谁知道为什么?

<?php

$array  =   array(
    "Interno",
    "id"
);

$step = count($array) - 1;

foreach (range(0, $step) as $number) {
    echo '<p>'.$number.'</p>';
}

$datetime1 = new DateTime('2010-08-2');
$datetime2 = new DateTime('2009-07-30');

$interval = date_diff($datetime1,$datetime2);
?>

3 个答案:

答案 0 :(得分:1)

这是一个PHP错误。

从5.3.5开始仍然存在,似乎在5.3.6中已经修复。

https://bugs.php.net/bug.php?id=51894

答案 1 :(得分:0)

嗯,这两个功能彼此无关。

其次,range的第二个参数不是一个步骤,它是一个最大值(请参阅range docs ...因此,如果您收到step exceeds the specified range错误,我就是d猜测默认步长值1大于范围的最大值(count($array) - 1的结果)...我不确定为什么会在你的代码中发生这种情况,但这是一个开始< / p>

答案 2 :(得分:0)

我同意ircmaxell,函数范围 date_diff 不相关,不以任何方式进行交互。问题应该在你的数组中以某种方式改变。 此外,对我来说,您的示例包含不必要的操作,例如计数范围,并且可以缩短为:

<?php

$array  =   array(
    "Interno",
    "id"
);

foreach ($array as $number => $value) {
    echo '<p>'.$number.'</p>';
}

$datetime1 = new DateTime('2010-08-2');

$datetime2 = new DateTime('2009-07-30');

$interval = date_diff($datetime1,$datetime2);
?>