当前位置:  开发笔记 > 编程语言 > 正文

如何找到foreach索引

如何解决《如何找到foreach索引》经验,为你挑选了8个好方法。

有可能找到foreach索引吗?

在一个for循环如下:

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

$i 会给你索引.

我是否必须使用for循环或是否有某种方法来获取foreach循环中的索引?



1> Owen..:
foreach($array as $key=>$value) {
    // do stuff
}

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


这实际上是正确的,但不应该是接受的答案,因为键也可以是一个字符串.说你做`$ myarr ['foo'] ='bar';`这个方法失败了
@Bison你的意思是它没有失败.但它没有遵守OP问题.他正在寻找像第n个元素这样的数值.
当然,这个问题不是很具体,我认为这意味着OP基本上没有意识到$ key => $ value语法
就像@Toskan所说,这不应该是公认的答案.我认为最好只在循环外创建一个变量并从那里开始计数,在每次迭代时用`vatiable ++;`增加它.传统的方式,但一直有效.

2> ConroyP..:

你可以放入一个黑客攻击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++;
}


在循环中增加一个值几乎不是"黑客".
@ThomasMcCabe有人甚至可能会说这是循环的核心用途之一.

3> Bailey Parke..:

应该注意的是,您可以调用key()任何数组来查找其当前的键.您可以猜测current()将返回当前值并将next()数组的指针移动到下一个元素.


替代的+1,但是每次迭代中的函数调用比使用预先指定的变量稍微重一些(即使用来自`$ key => $ value`的`$ key`)...但是,我敢打赌,性能较低是在简单的循环中不显着/可察觉.

4> Zoredache..:

欧文有一个很好的答案.如果您只想要密钥,并且您正在使用数组,这可能也很有用.

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


如果需要索引,`foreach(array_keys($ array)as $ index => $ key)`。

5> Ólafur Waage..:

您可以$i在循环外创建并$i++在循环的底部执行.


值得注意的是,这种方法给出了循环的当前迭代,而不是迭代数组的当前索引.

6> 小智..:

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

for ($i=0; $i$thing) { ... }

例如

for ($i=0; $i$thing) {
    echo "Thing ".$i." is ".$thing;
}


不是它是一个关联数组

7> 小智..:

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

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

这很容易而且通常



8> 小智..:

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

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

对我来说没问题(虽然只是经过初步测试).

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有