是否有可能找到foreach索引?

在for循环中如下所示:

for ($i = 0; $i < 10; ++$i) {
   echo $i . ' ';
}

$i会给你索引。

我必须使用for循环还是有一些方法在foreach循环中获得索引?


当前回答

我想添加这个,我在laravel中使用这个来索引我的表:

循环- >美元指数 我还用++$loop使它从1开始递增

我的代码:

@foreach($resultsPerCountry->first()->studies as $result)
  <tr>
    <td>{{ ++$loop->index}}</td>                                    
  </tr>
@endforeach

其他回答

乔纳森是对的。PHP数组就像一个映射表,将键映射到值。在某些情况下,如果定义了数组,则可以获得索引,例如

$var = array(2,5);

for ($i = 0; $i < count($var); $i++) {
    echo $var[$i]."\n";
}

您的输出将是

2
5

在这种情况下,数组中的每个元素都有一个已知的索引,但如果您执行如下操作

$var = array_push($var,10);

for ($i = 0; $i < count($var); $i++) {
    echo $var[$i]."\n";
}

你没有输出。这是因为PHP中的数组不像大多数语言中的数组那样是线性结构。它们更像哈希表,可能有也可能没有所有存储值的键。因此,foreach不使用索引来遍历它们,因为它们只有在定义了数组时才有索引。如果需要索引,请确保在遍历数组之前已完全定义数组,并使用for循环。

你可以在循环外创建$i,并在循环底部执行$i++。

我想添加这个,我在laravel中使用这个来索引我的表:

循环- >美元指数 我还用++$loop使它从1开始递增

我的代码:

@foreach($resultsPerCountry->first()->studies as $result)
  <tr>
    <td>{{ ++$loop->index}}</td>                                    
  </tr>
@endforeach

PHP数组有内部指针,所以试试这个:

foreach($array as $key => $value){
   $index = current($array);
}

对我来说还行(不过只是非常初步的测试)。

需要注意的是,您可以在任何数组上调用key()来查找当前所在的键。正如你所猜测的,current()将返回当前值,next()将移动数组的指针到下一个元素。