while 循环与 next() vs foreach

While loop with next() vs foreach

我正在浏览一些第三方代码,然后我 运行 进入了这个用于浏览数组的片段。由于这是一个受人尊敬的代码库,我正在徘徊移动内部指针与使用良好的旧 foreach 循环的麻烦背后的秘密是什么。

感谢您的意见!

$handlerKey = null;
reset($this->handlers);
while ($handler = current($this->handlers)) {
    if ($handler->isHandling(array('level' => $level))) {
        $handlerKey = key($this->handlers);
        break;
    }

    next($this->handlers);
}

不同之处在于,您明确声明要移动到可迭代对象的下一个值,而不是允许 PHP 为您执行此操作。

如果您将有条件地在循环中执行进一步的逻辑,这种表示您想要移动到下一个值的模式非常有用。但这可以通过简单地使用 continue() 语句以更少的代码来完成。然而,在这种情况下,两者都是不必要的。

请记住,PHP 最初是为 C 语言设计的 API,开发人员可以在其中直接操作内存存储和寄存器。这可能是继承自那个的旧设计模式。