検索

ホームページ  >  に質問  >  本文

非推奨の each() 関数を使用するコードを更新する方法

<p>PHP 7.2 では、<code>each</code> 関数は非推奨になりました。ドキュメントには次のように記載されています: </p> <ブロック引用> <p><strong>警告</strong> PHP 7.2.0 以降、この関数は非推奨になりました。この関数に依存することは強くお勧めしません。 </p> </blockquote> <p>コードを使用しないようにコードを更新するにはどうすればよいですか?以下にいくつかの例を示します: </p> <ol>
  • ; <pre class="brush:php;toolbar:false;">$ar = $o->me; リセット($ar); list($typ, $val) = each($ar);</pre> </li>
  • ; <pre class="brush:php;toolbar:false;">$out = array('me' => array(), 'mytype' => 2, '_php_class' => null); $expected = each($out);</pre> </li>
  • ; <pre class="brush:php;toolbar:false;">for(reset($broken);$kv = each($broken);) {...}</pre> </li>
  • ; <pre class="brush:php;toolbar:false;">list(, $this->result) = each($this->cache_data);</pre> </li>
  • ; <pre class="brush:php;toolbar:false;">// 配列の末尾または制限まで反復 > 配列の長さ $i = 0; リセット($array); while( (list($id, $item) = each($array)) || $i < 30 ) { // コード $i; }</pre> </li> </ol> <p>PHP 7.2 でコードを実行すると、次のエラーが表示されます。</p> <ブロック引用> <p>非推奨: each() 関数は非推奨になりました。このメッセージはその後の呼び出しでは無視されます</p> </blockquote><p><br /></p>
  • P粉883223328P粉883223328449日前662

    全員に返信(2)返信します

  • P粉463418483

    P粉4634184832023-08-23 09:19:01

    2019 インスタント アップグレードeach()

    実際には each() を置き換えることができる状況は数多くあります。そのため、この質問には非常に多くの異なる賛成票が寄せられています。

    リーリー ###その上:### リーリー

    これらは手動で 1 つずつ置き換えることができます。しかし、もっと良い方法はないでしょうか?

    私は移行プロジェクトを支援しており、このようなケースを 150 件以上経験しています。私は怠け者なので、コードを上記の方法に変換できる

    Rector

    というツールを作りました (もっと多くのケースがありますが、答えをスパム送信したくありません) 。 これは PHP_72

    コレクションの一部です。

    4 コードをアップグレードする手順


    1. インストール

    リーリー

    2.

    rector.php

    設定ファイル

    を作成します。 リーリー 3. PHP_72

    コレクション

    を追加します。 リーリー 4. コード上で実行します リーリー

    これが移行に役立つことを願っています。

    エラーや例外がある場合、それは Rector が見逃したものです。

    問題を作成
    すると、問題を修正して、考えられるすべてのケースで動作するようになります。

    返事
    0
  • P粉982881583

    P粉9828815832023-08-23 00:06:26

    1. 最初の 2 つの例では、key()current() を使用して必要な値を割り当てることができます。

      リーリー
    2. リーリー

      このような場合、next() を使用して後でカーソルを進めることができますが、コードの残りの部分がこれに依存しない場合は、これは必要ない可能性があります。

    3. 3 番目のケースでは、foreach() ループを使用し、ループ内で $kv を割り当てることをお勧めします。

      リーリー
    4. 4 番目のケースでは、list() ではキーが無視されるようですので、現在の値を割り当てることができます。

      リーリー

      最初の 2 つのケースと同様、コードの残りの部分が $this->cache_data とどのようにやり取りするかによっては、next() を使用してカーソルを進める必要がある場合があります。

    5. 5 番目のケースは、for() ループで置き換えることができます。

      リーリー

    返事
    0
  • キャンセル返事