使用PHP 7.2,each函数已被弃用。文档中提到:
警告 从PHP 7.2.0开始,该函数已被弃用。强烈不建议依赖于该函数。
如何更新我的代码以避免使用它?以下是一些示例:
$ar = $o->me; reset($ar); list($typ, $val) = each($ar);
$out = array('me' => array(), 'mytype' => 2, '_php_class' => null);
$expected = each($out);
for(reset($broken);$kv = each($broken);) {...}
list(, $this->result) = each($this->cache_data);
// iterating to the end of an array or a limit > the length of the array
$i = 0;
reset($array);
while( (list($id, $item) = each($array)) || $i < 30 ) {
// code
$i++;
}
当我在PHP 7.2上执行代码时,会收到以下错误:
已弃用:each()函数已被弃用。此消息将在进一步调用时被忽略
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
对于你的前两个示例案例,你可以使用
key()和current()来分配你所需要的值。$out = array('me' => array(), 'mytype' => 2, '_php_class' => null); $expected = [key($out), current($out)];在这些情况下,你可以使用
next()在之后推进游标,但如果你的其余代码不依赖于它,这可能是不必要的。对于第三种情况,我建议你只是使用一个
foreach()循环,并在循环内部分配$kv。foreach ($broken as $k => $v) { $kv = [$k, $v]; }对于第四种情况,在
list()中似乎忽略了键,所以你可以分配当前值。像前两种情况一样,根据你的其余代码如何与
$this->cache_data交互,可能需要使用next()推进游标。第五种情况可以用
for()循环替代。reset($array); for ($i = 0; $i < 30; $i++) { $id = key($array); $item = current($array); // 代码 next($array); }