検索
  • サインイン
  • サインアップ
パスワードのリセットが成功しました

興味のあるプロジェクトをフォローし、それらに関する最新ニュースをチェックしてください

foreach 変更

コレクション 105
リーディング 69610
更新時間 2016-09-11

1. foreach() ループは、配列の内部ポインターに対して機能しなくなりました。

$array = [0, 1, 2];
foreach ($array as &$val) 
{
    var_dump(current($array));
}
PHP7 は結果として int(0) を 3 回出力します。これは、配列の内部ポインタが変更されていないことを意味します。

前の操作の結果は、int(1)、int(2)、および bool(false) を出力します。

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

foreach が値 (値ごと) でループする場合、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 オブジェクトと呼ぶことができます。

ホットAIツール
Undress AI Tool
Undress AI Tool

脱衣画像を無料で

AI Clothes Remover
AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undresser.AI Undress
Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

Stock Market GPT
Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

人気のツール
メモ帳++7.3.1
メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版
SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6
ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版
SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)