問題タブ [php-7.4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
618 参照

php - PHP 7.4以降で効率的な方法で、これが入力される場合にのみ、foreachループの前後にコードをトリガーする方法は?

これは、次の質問に似ています: foreach ループで最初と最後の反復を決定する方法は? ただし、その+10年前の質問は非常にarray指向性が高く、多くの異なるタイプをループできるという事実と互換性のある回答はありません.

PHP >= 7.4 で反復可能な何か(配列、イテレーター、ジェネレーター、PDOStatementオブジェクトDatePeriodプロパティなど) のループが与えられた場合、どのように効率的な方法で、コードの前後に発生する必要があるコードをトリガーすることができますか?ループしますが、ループに入る場合のみ?

典型的な使用例は、HTML リストの生成です。

<ul>いくつかの要素がある場合にのみ</ul>印刷する必要があります。

これらは、これまでに発見した制約です。

  1. empty():ジェネレーター/イテレーターでは使用できません。
  2. each(): 非推奨です。
  3. iterator_to_array()発電機の利点を無効にします。
  4. ループ内およびループ後にテストされるブール値フラグは、効率的とは見なされません。そのテストは、ループの開始時と終了時に 1 回ずつ実行されるのではなく、反復ごとに実行されることになるためです。
  5. 上記の例では、出力バッファリングまたは出力を生成するための文字列連結を使用できますが、ループが出力を生成しない場合には適していません。(追加のアイデアをありがとう@barmar

次のコード スニペットは、 で反復処理できるさまざまなタイプをまとめたものですforeach。答えを提供するための開始点として使用できます。

このようなスクリプトは、次の出力になります。