如何在不使用"计数器"变量的情况下找出foreach构造在PHP中循环的次数?

Tit*_*tus 6 php

如果我有一个foreach构造,像这样:

foreach ($items as $item) {
    echo $item . "<br />";
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用计数器变量跟踪构造循环的次数,如下所示:

$counter = 0;

$foreach ($items as $item) {
    echo $item.' is item #'.$counter. "<br />";
    $counter++;
}
Run Code Online (Sandbox Code Playgroud)

但是可以在使用"计数器"变量的情况下完成上述操作吗?也就是说,是否可以知道循环内的迭代计数foreach,而不需要"计数器"变量?

注意:我完全可以在我的循环中使用计数器,但我只是想知道是否有一个直接构建到PHP中的规定...这就像是一个很棒的foreach构造,它简化了某些操作,这些操作在执行时很笨拙使用for构造的同样的事情.

Aln*_*tak 5

没有更简单的方法 - 这就是计数变量的用途.

我假设您想知道循环期间的当前计数.如果您只是需要知道它,请count($items)按照其他人的建议使用.


Ale*_*exV 5

不,除非你$items的数组具有以0键开头的连续索引(键),否则它是不可能的.

如果它有连续的索引吗:

foreach ($items as $k => $v)
{
    echo $k, ' = ', $v, '<br />', PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)

但正如其他人所说,使用计数器变量并没有错.