有可能找到foreach
索引吗?
在一个for
循环如下:
for ($i = 0; $i < 10; ++$i) { echo $i . ' '; }
$i
会给你索引.
我是否必须使用for
循环或是否有某种方法来获取foreach
循环中的索引?
foreach($array as $key=>$value) { // do stuff }
$key
是每个$array
元素的索引
你可以放入一个黑客攻击foreach
,例如每次运行时增加的字段,这正是for
循环在数字索引数组中提供的.这样的字段将是需要手动管理(增量等)的伪索引.
A 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 }
您可以$i
在循环外创建并$i++
在循环的底部执行.
这两个循环是等效的(当然是安全栏杆):
for ($i=0; $i$thing) { ... }
例如
for ($i=0; $i$thing) { echo "Thing ".$i." is ".$thing; }
我认为最好的选择是一样的:
foreach ($lists as $key=>$value) { echo $key+1; }
这很容易而且通常
PHP数组有内部指针,所以试试这个:
foreach($array as $key => $value){ $index = current($array); }
对我来说没问题(虽然只是经过初步测试).