如何更新使用已弃用的 each() 函数的代码? [英] How can I update code that uses the deprecated each() function?

查看:32
本文介绍了如何更新使用已弃用的 each() 函数的代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 PHP 7.2 中,each 已弃用.文档 说:

With PHP 7.2, each is deprecated. The documentation says:

警告 自 PHP 7.2.0 起,此函数已被弃用.强烈建议不要依赖此功能.

Warning This function has been DEPRECATED as of PHP 7.2.0. Relying on this function is highly discouraged.

如何更新我的代码以避免使用它?以下是一些示例:

How can I update my code to avoid using it? Here are some examples:

$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 上执行代码时,我收到以下错误:

    When I execute the code on PHP 7.2 I receive the following error:

    已弃用:each() 函数已弃用.此消息将在进一步调用时被抑制

    Deprecated: The each() function is deprecated. This message will be suppressed on further calls

    推荐答案

    1. 对于前两个示例,您可以使用 key()current() 来分配所需的值.

    1. For your first two example cases, you could use key() and current() to assign the values you need.

    $ar = $o->me;   // reset isn't necessary, since you just created the array
    $typ = key($ar);
    $val = current($ar);
    

  • $out = array('me' => array(), 'mytype' => 2, '_php_class' => null);
    $expected = [key($out), current($out)];
    

    在这些情况下,您可以使用 next() 之后移动光标,但如果您的其余代码不依赖于此,则可能没有必要.

    In those cases, you can use next() to advance the cursor afterward, but it may not be necessary if the rest of your code doesn't depend on that.

    对于第三种情况,我建议只使用 foreach() 循环,并在循环内分配 $kv.

    For the third case, I'd suggest just using a foreach() loop instead and assigning $kv inside the loop.

    foreach ($broken as $k => $v) {
         $kv = [$k, $v];
    }
    

  • 对于第四种情况,看起来list()中的key被忽略了,所以你可以分配当前值.

  • For the fourth case, it looks like the key is disregarded in list(), so you can assign the current value.

    $this->result = current($this->cache_data);
    

    与前两种情况一样,可能需要使用 next() 使光标前进,具体取决于其余代码与 $this->cache_data.

    Like the first two cases, it may be necessary to advance the cursor with next() depending on how the rest of your code interacts with $this->cache_data.

    可以用 for() 循环替换第五个.

    Fifth can be replaced with a for() loop.

    reset($array);
    for ($i = 0; $i < 30; $i++) {
        $id = key($array);
        $item = current($array);
        // code
        next($array);
    }
    

  • 这篇关于如何更新使用已弃用的 each() 函数的代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆