6
4

More than 3 years have passed since last update.

PHP8 で Call to undefined function each() になる場合の対処法

Posted at

PHP8 で each 関数が削除されたため、 Call to undefined function each() というエラーになります。

例えば、以下のような処理がある場合は、 current()next() を使用した処理に書き換えます。

// PHP7 までは each() 関数が使える
while (list($k, $v) = each($array)) {
    echo $k;
    echo $v;
}
// PHP8 以降は each() 関数は使えない
while ($current = current($array)) {
    $k = key($array);
    $v = $current;
    echo $k;
    echo $v;
    next($array);
}

Composer のパッケージで each() が使われている場合

Composer のパッケージで each() 関数が使われている場合は、直接書き換えるわけにはいきませんので、解決するためのパッケージを作成しました。

以下のコマンドで PHP8 でも each() 関数を使えるようになります。

composer require nanasess/php8-compat

本来は、こういった互換プログラムを使用するのはあまりよろしくないので、
1. 対応されるまで待つ
2. each() 関数を使わないよう修正し、 Pull Request する
などの対応をするのが良いと思います。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4