注:この答えは PHP のzval コンテナについての知識があることを前提としています。特に is_ref や refcount が何者かを知っている必要があります。 それらについては、PHP マニュアルも参照してください。 foreach は配列やプレーンなオブジェクト、Traversable オブジェクトで行えますが、ここでは特別に記述がない場合は配列を foreach する際についての説明をします。 まず、配列の foreach の挙動について理解する上で重要となる、配列とそのイテレーションについての内部挙動を説明します。 配列イテレーションの内部挙動 PHP の配列は HashTable により管理されており、また、foreach はそれに基づいて配列を走査します。 PHP は内部的に配列を行き来するための2つのメカニズムを持っています。 1つ目は、内部配列ポインタです。このポイン