PHP 7.2 each()函数已弃用

时间:2018-07-08 19:00:14

标签: php laravel each

       if ( is_array( $u ) ) {
            while( list( $key ) = each( $u ) ) {
                $u = $u[$key];
                break;
            }
        }

并且我的php版本是7.2 当我在laravel框架上运行它时,我遇到了这个错误

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

我发现多数民众赞成我必须将每个更改为foreach enter link description here

告诉任何人将代码更改给我,以便在php 7.2上工作

3 个答案:

答案 0 :(得分:4)

if (is_array($u)) {
    foreach ($u as $k => $v) {
        $u = $u[$k]; // or $v
        break;
    }
}

但是$u将始终是数组的第一个值,因此我看不到您需要它的位置。您只需执行$u = $u[0];

,即可获得数组的第一个值

答案 1 :(得分:4)

        while( list( $key ) = each( $u ) ) {
            $u = $u[$key];
            break;
        }

绝对没有理由在这里进行循环。您只是从数组中获取第一个值并覆盖该数组。可以使用current()将上述循环重写为一行,这将从数组中拉出当前值(如果未更改数组指针,则为第一个值):

$u = current($u);

答案 2 :(得分:3)

正如PHP7.2所说,我建议使用foreach()函数替代不推荐使用的each()。在这里,我列举了一些可以在Wordpress中运行的示例。

(OLD) while ( list( $branch, $sub_tree ) = each( $_tree ) ) {...}
(NEW) foreach ( (Array) $_tree as $branch => $sub_tree ) {...}


(OLD) while ( $activity = each( $this->init_activity ) ) {...}
(NEW) foreach ( $this->init_activity as $activity ) {...}

请阅读: