我在php中有以下代码:
foreach($lines as $num=>value){
fixIndex();
if ($num <$i)continue;
function fixIndex(){
static $i=0;
static $j=1;
if($j-$i==60)$i=$i=$i+60;
$j++;
return $i;
}
运行程序时没有错误。但$ i似乎没有影响。当我将其更改为数字,即60时,它将跳过我想要的60条记录。 任何人都可以帮我解决这个问题吗? 提前谢谢。
答案 0 :(得分:0)
对我来说完全错误和奇怪:
首先 - 它足够了:
$i += 60; or $i = $i + 60; //you wrote $i=$i=$i+60
第二 - 使用(总是)
{} and paragraphs like this
if ($j-$i==60) {
//body here
}
这不是必要的
return $i;
因为你使用静态变量(它也不推荐)。如果将函数结果赋给变量,即
,则返回正确$i = fixIndex();
这种情况永远不会得到满足
if($j-$i==60)
因为在此之上你每次都会初始化变量$ i和$ j
static $i=0;
static $j=1;
1 - 0!= 60,永远不会!
答案 1 :(得分:0)
首先我很抱歉这种错误。它确实是
if($j-$i==60)$i=$i+60;
$J++;
我同意退还$ i;没有必要。 foreach循环还有更多的代码要遵循这就是为什么}还没有看到。 根据手册,静态只设置$ i和$ j一次。当功能退出时。 $ j增加1.所以在60调用该函数之后。 $ j- $ i == 60应该发生。那时$ i应该受到影响并改为60。 我真正的问题是在fixIndex函数非常大的$ j增量之后改变$ i的值。有帮助吗? 非常感谢您的快速回答。如果我没有为这个问题解释清楚,请指出它。 谢谢大家。
答案 2 :(得分:-1)
value
语法错误$value
并且foreach没有}
试试这个
foreach($lines as $num=>$value){
fixIndex();
if ($num <$i)continue;
}
function fixIndex(){
static $i=0;
static $j=1;
if($j-$i==60)$i=$i=$i+60;
$j++;
return $i;
}