php 7.2 each() 函数已弃用[重复]

Posted

技术标签:

【中文标题】php 7.2 each() 函数已弃用[重复]【英文标题】:php 7.2 each() function is deprecated [duplicate] 【发布时间】:2018-12-16 12:35:39 【问题描述】:
       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 上工作,谢谢

【问题讨论】:

【参考方案1】:
if (is_array($u)) 
    foreach ($u as $k => $v) 
        $u = $u[$k]; // or $v
        break;
    

$u 将始终是数组的第一个值,所以我看不出您需要它的位置。你可以简单地通过$u = $u[0];得到数组的第一个值

【讨论】:

【参考方案2】:
        while( list( $key ) = each( $u ) ) 
            $u = $u[$key];
            break;
        

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

$u = current($u);

【讨论】:

【参考方案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 ) ...

请阅读:

https://www.drupal.org/project/drupal/issues/2885309 https://wiki.php.net/rfc/deprecations_php_7_2#each

【讨论】:

以上是关于php 7.2 each() 函数已弃用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP 7.2:每个都已弃用。如何转换这些例子? [复制]

已弃用:each() 函数已弃用。 C:\xampp\htdocs\phprojekt\library\Zend\Cache\Backend.php 在第 66 行 [重复]

已弃用:each() 函数已弃用。 C:\xampp\apps\magento\htdocs\vendor\colinmollenhour\cache-backend-file\File.php 第

如何更新使用已弃用 each() 函数的代码?

如何在没有弃用的“each”函数的情况下重写这个 php“if”语句?

不推荐使用 each() 函数。此消息将在进一步调用 PHP 7.2 时被禁止 [重复]