如何find这个foreach索引

有没有可能findforeach索引?

for循环中如下所示:

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

$i会给你的指数。

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

 foreach($array as $key=>$value) { // do stuff } 

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

你可以在你的foreach一个hack,比如在每个run-through上增加一个字段,这正是for循环在数字索引数组中所提供的。 这样的领域将是一个需要手动pipe理(增量等)的伪索引。

一个foreach会给你你的$key值的索引,所以这样的黑客应该没有必要。

例如,在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++; } 

应该指出,你可以调用任何数组上的key()来查找当前的键。 正如你所猜测的, current()将返回当前值, next()将把数组的指针移动到下一个元素。

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

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

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

这两个回路是等效的(当然是安全栏杆):

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

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

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

为我工作好(只是非常初步testing虽然)。

乔纳森是正确的。 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($assoc_array as $key => $value){ //do something } 

这对于非关联数组也能正常工作。 $ key将是索引值。 如果你愿意,你也可以这样做:

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

我觉得最好的select是一样的:

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

这很容易和正常

 foreach(array_keys($array) as $key) { // do stuff } 
 foreach($arrvariable as $key=>$value){ echo "$key"; }