让我们看看这个循环:
$tomb = [1, 2, 3];
foreach ($tomb as $x) {
echo $x . '<br/>';
}
var_dump(current($tomb));
它显示:
1
2
3
bool(false)
是正确的,因为内部指针在每次迭代时都会前进,并最终指向数组,因此current()返回false。
但这是
$tomb = [1, 2, 3];
foreach ($tomb as $x) {
echo $x . ' : ' . current($tomb) . '<br/>';
}
var_dump(current($tomb));
显示:
1 : 2
2 : 2
3 : 2
int(2)
为什么?内部指针并非在每次迭代时都前进,只能一次。在current()下的文档说:“它不会移动指针 n”。为什么内部指针只前进一个,而不是所有迭代?为什么current()影响内部指针?