如何找到foreach索引?

是否有可能找到foreach索引?

for循环中,如下所示:

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

$i将为您提供索引。

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

917518 次浏览
foreach($array as $key=>$value) {
// do stuff
}

$key是每个$array元素的索引

你可以在循环外创建$i,在循环底部创建$i++

您可以在foreach中添加一个hack,例如在每次遍历时增加一个字段,这正是for循环在数值索引数组中提供的内容。这样的字段将是一个伪索引,需要手动管理(增量等)。

foreach将以$key值的形式为您提供索引,因此这样的hack应该是不必要的。

例如,在foreach

$index = 0;
foreach($data as $key=>$val) {
// Use $key as an index, or...


// ... manage the index this way..
echo "Index is $index\n";
$index++;
}

乔纳森是对的。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循环。

欧文有一个很好的答案。如果你只想要一个键,并且你正在处理一个数组,这可能也是有用的。

foreach(array_keys($array) as $key) {
//  do stuff
}

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

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

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

这两个循环是等价的(当然除了安全栏杆):

for ($i=0; $i<count($things); $i++) { ... }


foreach ($things as $i=>$thing) { ... }

for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}


foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}

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

我通常在使用关联数组时这样做:

foreach ($assoc_array as $key => $value) {
//do something
}

这也适用于非关联数组。$key将是索引值。如果你喜欢,你也可以这样做:

foreach ($array as $indx => $value) {
//do something
}

我认为最好的选择是这样的:

foreach ($lists as $key=>$value) {
echo $key+1;
}

这很简单,也很正常

foreach(array_keys($array) as $key) {
//  do stuff
}

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

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

我的代码:

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

当我必须在同一个上下文中使用foreach索引和值时,我用这种方法解决了:

$array = array('a', 'b', 'c');
foreach ($array as $letter=>$index) {


echo $letter; //Here $letter content is the actual index
echo $array[$letter]; // echoes the array value


}//foreach


我使用++$key而不是$key++从1开始。通常从0开始。

@foreach ($quiz->questions as $key => $question)
<h2> Question: \{\{++$key}}</h2>
<p>\{\{$question->question}}</p>
@endforeach

输出:

Question: 1
......
Question:2
.....
.
.
.