will the suppressed remove further calls php

the - Cómo resolver esta función obsoleta cada php



the each() function is deprecated tcpdf (3)

Con PHP 7.2, each está en desuso. La documentación dice:

Advertencia Esta función ha sido DEPRECTA a partir de PHP 7.2.0. Confiar en esta función es altamente desaconsejable.

¿Cómo puedo actualizar mi código para evitar usarlo? Aquí hay unos ejemplos:

  1. $ar = $o->me; reset($ar); list($typ, $val) = each($ar);

  2. $out = array(''me'' => array(), ''mytype'' => 2, ''_php_class'' => null); $expected = each($out);

  3. for(reset($broken);$kv = each($broken);) {...}

  4. list(, $this->result) = each($this->cache_data);

  5. // 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++; }


Para sus primeros dos casos de ejemplo, podría usar key y current para asignar los valores que necesita.

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

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

En esos casos, puede usar next para avanzar el cursor después, pero puede que no sea necesario si el resto de su código no depende de eso.

Para el tercer caso, sugeriría usar un bucle foreach en su lugar y asignar $kv dentro del bucle.

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

Para el cuarto caso, parece que la clave no se tiene en cuenta en la list , por lo que puede asignar el valor actual.

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

Al igual que en los dos primeros casos, puede ser necesario avanzar el cursor con el next dependiendo de cómo interactúa el resto de su código con $this->cache_data .

# 5 se puede reemplazar con un bucle for.

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


puede crear su propia función each() usando key() , current() y next() . luego reemplaza tus llamadas con esa función, como esta:

<?php function myEach(&$arr) { $key = key($arr); $result = ($key === null) ? false : [$key, current($arr), ''key'' => $key, ''value'' => current($arr)]; next($arr); return $result; }

1.

$ar = $o->me; reset($ar); list($typ, $val) = myEach($ar);

2.

$out = array(''me'' => array(), ''mytype'' => 2, ''_php_class'' => null); $expected = myEach($out);

3.

for(reset($broken);$kv = myEach($broken);) {...}


reset($array); while (list($key, $value) = each($array)) {

ACTUALIZAR

reset($array); foreach($array as $key => $value) {