PHP7新機能foreach変更使用例

PHP中文网
リリース: 2016-07-06 13:34:23
オリジナル
1761 人が閲覧しました

PHP7 の新機能 foreach は以前のバージョンから少し変更されました。それでは、PHP7 の新機能 foreach の使用例を見てみましょう。この記事が皆さんのお役に立てれば幸いです。

ログイン後にコピー

1. foreach() ループは配列の内部ポインターに対して機能しなくなりました。PHP7 より前では、配列が foreach を介して反復されると、配列ポインターが移動していました。今後、これは当てはまらなくなります。以下のコードを参照してください。 。

$array = [0, 1, 2]; foreach ($array as &$val) { var_dump(current($array)); }
ログイン後にコピー

PHP5 の操作の結果は int(1) int(2) bool(false) を出力します
PHP7 の操作の結果は int(0) を 3 回出力します。これは、配列の内部ポインターが変更されていないことを意味します。
前回の実行の結果は、int(1)、int(2)、および bool(false) を出力します

2. 値に従ってループする場合、foreach は配列のコピー操作です

foreach が次に従ってループする場合value (値渡し)、foreach は配列のコピーに対して動作します。このようにして、ループ中に配列を変更しても、ループの動作には影響しません。

$array = [0, 1, 2]; $ref =& $array; // Necessary to trigger the old behavior foreach ($array as $val) { var_dump($val); unset($array[1]); }
ログイン後にコピー

上記のコードはループ内の配列の 2 番目の要素の設定を解除しますが、PHP7 は依然として 3 つの要素 (0 1 2) を出力します。
以前のバージョンの PHP では、1 をスキップして (0 2) のみを出力します。

3. 参照に従ってループする場合、配列への変更はループに影響します。

ループ時に参照を使用する場合、配列への変更はループの動作に影響します。ただし、PHP7 バージョンでは、多くのシナリオで場所のメンテナンスが最適化されます。たとえば、ループ中に要素を配列に追加します。

$array = [0]; foreach ($array as &$val) { var_dump($val); $array[1] = 1; }
ログイン後にコピー

上記のコードに追加された要素もループに参加するため、PHP7 では "int(0) int(1)" が出力されますが、古いバージョンでは "int(0)" のみが出力されます。

4. 単純なオブジェクトをループします (走査不可能)。

単純なオブジェクトのループは、値によるループでも参照によるループでも、配列内の参照によるループと同じように動作します。ただし、位置管理はより正確になります。

5. Traversable オブジェクトの動作は以前と同じです。

編集者注: 上記の Stackoverflow の説明: Traversable オブジェクトは、Iterator または IteratorAggregate インターフェイスを実装するオブジェクトです。オブジェクトが iterator または IteratorAggregate インターフェイスを実装している場合、それを iterator オブジェクトと呼ぶことができます。

上記は PHP7 の新機能 foreach の使用例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (m.sbmmt.com) をご覧ください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!