2010-08-25 48 views
1

以下脚本发出 'Warning:range()[function.range]:仅当调用date_diff函数时,步长超过' 中的指定范围。有谁知道为什么?使用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); 
?> 
+0

工作正常,我在Win7和PHP5.3.3 – Gordon 2010-08-25 15:32:35

+0

此代码工作正常,我。而'$ step'在那里是一个误用,这是最大的。 – NullUserException 2010-08-25 15:34:13

+0

您是否尝试过在第一次执行后重新加载页面?对我来说,它工作正常,但只在第一次执行。 – mquasar 2010-08-25 15:47:30

回答

0

好吧,这两个函数没有任何关系。

其次,range第二个参数是不是一个步骤,这是一个最大值(见range docs ...所以,如果你得到一个step exceeds the specified range错误,我猜想,默认步进值1大于该范围内的最大值(的count($array) - 1结果)...我不知道为什么这是发生在你的代码,但它是一个开始

+0

(count($ array)-1)是1,所以range(0,1)应该输出0 1.这样做,但如果我在同一页面中使用date_diff函数,则会得到警告并且不会输出。 – mquasar 2010-08-25 15:53:18

+0

我的猜测(以及为什么我发布它)是'$ array'正在改变。是你发布的**精确**代码被使用,你得到的错误?如果没有,请你发布确切的代码,因为我有一种感觉,除了你发布的东西之外还有其他事情发生... – ircmaxell 2010-08-25 15:55:18

+0

好吧,这个问题在一个小的cakephp应用程序中引发。但是我孤立了'麻烦'的代码并得到了相同的结果。它可能是一个PHP 5.3.0的问题?为了说清楚,是的,这是我收到警告的确切代码。 – mquasar 2010-08-25 15:59:02

0

我与ircmaxell同意,功能范围date_diff不相关并且不以任何方式进行交互,问题应该在你的数组中,并以某种方式进行修改 另外,就我而言,你的示例cont艾因不必要的操作像计数范围,它可以缩短到这一点:

<?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); 
?> 
+0

嗯,是的。我之所以这么说是因为这是蛋糕库的一部分。我试着隔离代码来检查它是一个蛋糕问题还是一个php问题。由于某些原因,我仍然在隔离代码中编写警告消息。 – mquasar 2010-08-27 13:08:56

相关问题