[解決済み] 非推奨のeach()関数を使用しているコードを更新するにはどうすればよいですか?
2022-03-03 04:49:38
質問
PHP7.2で。
each
は非推奨です。
ドキュメント
と書かれています。
警告 この関数は PHP 7.2.0 以降で廃止されました。この関数に依存することは非常に危険です。
これを使わないようにするには、どのようにコードを更新すればよいのでしょうか?以下はその例です。
-
$ar = $o->me; reset($ar); list($typ, $val) = each($ar);
-
$out = array('me' => array(), 'mytype' => 2, '_php_class' => null); $expected = each($out);
-
for(reset($broken);$kv = each($broken);) {...}
-
list(, $this->result) = each($this->cache_data);
-
// 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++; }
PHP7.2で実行すると、以下のエラーが発生します。
非推奨。each() 関数は非推奨です。このメッセージは、今後呼び出すと抑制されます。
解決方法は?
-
最初の2つの例では、次のように使用できます。
key()
とcurrent()
で必要な値を割り当ててください。$ar = $o->me; // reset isn't necessary, since you just created the array $typ = key($ar); $val = current($ar);
-
$out = array('me' => array(), 'mytype' => 2, '_php_class' => null); $expected = [key($out), current($out)];
そのような場合は
next()
でカーソルを先に進めることができますが、残りのコードがそれに依存しないのであれば、必要ないかもしれません。 -
3つ目のケースについては、単に
foreach()
ループの代わりに$kv
ループの中でforeach ($broken as $k => $v) { $kv = [$k, $v]; }
-
4つ目のケースは、キーが無視されるような形で
list()
ということで、現在の値を代入することができます。$this->result = current($this->cache_data);
最初の2つのケースと同様に、カーソルを進めるために
next()
をどのように扱うかによって異なります。$this->cache_data
. -
5番目は
for()
のループになります。reset($array); for ($i = 0; $i < 30; $i++) { $id = key($array); $item = current($array); // code next($array); }
関連
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】In_arrayが動作しない。
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて