插件窝 干货文章 php7.2版本后废弃的each()函数 替代方法

php7.2版本后废弃的each()函数 替代方法

php php7.2 each() 1870    来源:插件窝    2019-11-05

1、each函数已被废弃:

之前版本写法:

 
<?php
    $array = array();
    each($array);
 
    // Deprecated:  The each() function is deprecated. This message will be suppressed 
    on further calls(显示的错误警告)

 

在7.2版本中会提示过时,可以使用foreach替代each方法,也可以自己修改each方法替代:

 

<?php
    function func_new_each(&$array){
       $res = array();
       $key = key($array);
       if($key !== null){
           next($array); 
           $res[1] = $res['value'] = $array[$key];
           $res[0] = $res['key'] = $key;
       }else{
           $res = false;
       }
       return $res;
    }

 

 

 

 

2、当传递一个无效参数时,count()函数将抛出warning警告:

之前版本写法

 
<?php
    count('');
 
    // Warning:  count(): Parameter must be an array or an object that implements 
    Countable(显示的错误警告)

 

 

 

在7.2版本中将严格执行类型区分,参数类型不正确,将会出现警告,所以需要在使用count方法时注意参数的值,不过也可以通过自己修改方法来替代(不建议):

 

<?php
    function func_new_count($array_or_countable,$mode = COUNT_NORMAL){
        if(is_array($array_or_countable) || is_object($array_or_countable)){
            return count($array_or_countable, $mode);
        }else{
            return 0;
        }
    }

 

 

3、create_function被废弃,可以用匿名函数来代替:

之前版本写法:

 

<?php
    $newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
    echo "New anonymous function: $newfunc\n";
    echo $newfunc(2, M_E) . "\n";
    // outputs
    // New anonymous function: lambda_1
    // ln(2) + ln(2.718281828459) = 1.6931471805599
 
    // Warning This function has been DEPRECATED as of PHP 7.2.0. Relying on this 
    function is highly discouraged.(显示的错误警告)

 

 

在7.2版本中会有警告提示,可修改为匿名函数来替代: