如何替代已废弃的each()函数?附报错及旧代码示例
替代已废弃each()函数的方案
PHP从7.2版本开始废弃each()函数,8.0版本直接移除,针对你原代码list($k, $v) = each($files);,可以根据使用场景选择以下替代方式:
1. 循环遍历数组(最常见场景)
如果你的代码是在循环中使用each()遍历数组(比如配合while循环),推荐直接改用foreach循环,这是PHP官方推荐的数组遍历方式,更直观且高效:
原代码示例:
reset($files); while (list($k, $v) = each($files)) { // 处理$k(键)和$v(值)的逻辑 }
替代代码:
foreach ($files as $k => $v) { // 处理$k和$v的逻辑 }
foreach会自动初始化数组指针并完成遍历,无需手动调用reset(),代码更简洁。
2. 获取当前指针位置的键值对并移动指针
如果只是需要单次获取数组当前指针位置的键和值,同时将指针后移(完全复刻each()的行为),可以组合使用key()、current()和next()函数:
原代码:
list($k, $v) = each($files);
替代代码:
$k = key($files); $v = current($files); next($files);
key():返回数组当前指针位置的键current():返回数组当前指针位置的值next():将数组指针向后移动一位
当数组指针已处于末尾时,key()返回null,current()返回false,和each()返回false的行为一致。
内容的提问来源于stack exchange,提问作者Jay Parmar
相关产品推荐
相关产品推荐

