变量在函数调用中创建,在php中的foreach循环中使用它

时间:2016-02-14 10:11:38

标签: php

我在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条记录。 任何人都可以帮我解决这个问题吗? 提前谢谢。

3 个答案:

答案 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;
}