变量 create 在函数调用中,以在 PHP 的 foreach 循环中使用它


variable create in function call to use it in foreach loop in 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 条记录。谁能帮我解决这个问题?提前谢谢。

对我来说完全错误和奇怪:

首先 - 这就足够了:

$i += 60; or $i = $i + 60; //you wrote $i=$i=$i+60

第二 - 使用(始终(

{} and paragraphs like this
if ($j-$i==60) {
  //body here
}

这不是必需的

return $i;

因为您使用静态 var(也不建议这样做(。如果将函数的结果分配给变量,则返回是正确的,即

$i = fixIndex();

此条件从不满足

if($j-$i==60)

因为在此之上,您每次都$i和$j初始化变量

static $i=0;
static $j=1;

1 - 0 != 60,永远不会!

首先,

我对类型错误感到抱歉。真的是

if($j-$i==60)$i=$i+60;
$J++;

我同意返回$i; 是没有必要的。 foreach 循环还有更多代码要遵循,这就是为什么 } 还没有看到。根据手册,静态仅设置$i和$j一次。当函数退出时。$j递增 1。所以在 60 次调用该函数之后。应该发生$j-$i==60。那时$i应该受到影响并更改为60。我真正的问题是更改 fixIndex 函数后 60 增量$j的 $i 的值。 有什么帮助吗?非常感谢您的及时回答。如果我对这个问题解释得不够清楚,请指出来。谢谢大家。

您有语法错误value $value 而且没有}

试试这个

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