在PHP中的foreach中声明一个静态变量


Declare a static variable in a foreach in PHP

我有一个非常简单的问题。我如何使这个代码

$i = 0;
foreach($Array as $Value)
{
    echo $i;
    $i++
}

但是写成这样?

foreach($Array as $Value)
{
    $i = 0;
    echo $i;
    $i++
}

我应该使用STATIC变量吗?还是怎样我对此没有明确的看法。

谢谢!

你真的不应该这么做。静态变量用于在调用它们所嵌入的函数之间保持变量的值。它们对简单的循环没有用处。您的第二个代码将在每次迭代中将计数器重置为零。

例如,这是一个正确的用法:

function count() {
   static $x = 0; // executed the first time count() is called, then never again"
   echo ++$x;
}
count(); // 1
count(); // 2
count(); // 3

你当然可以有

foreach($array as $val) {
   static $x = 0;
   echo ++$x;
}

但是您不会得到任何东西,因为在循环的持续时间内,特定的代码段永远不会超出范围,所以$x的值永远不会"丢失"。

您可能想要使用

foreach($Array as $i => $Value)
{
    echo $i;    
}

foreach(array_values($Array) as $i=>$Value)
{
    echo $i;
}

虽然第一个例子是正确的,但也是正确的