On Wed, Jan 21, 2015 at 2:57 PM, Dmitry Stogov <dmi...@zend.com> wrote:
> Hi, > > Yeah, I think changing foreach behaviour in more consistent and efficient > way may make sense. > If we won't use HashTable.nInternalPointer we won't need to copy immutable > arrays. > The same for nested foreach on the same array. > We could also eliminate all the HashPosition magic introduced to keep PHP5 > behavior. > > On the other hand some apps may relay on current weird behavior. > > I remember, long time ago Nikita made some related proposal. > Nikita, could you please send a link. > > Thanks. Dmitry. > Original proposal is the patch linked at the end of https://bugs.php.net/bug.php?id=53405. However that was aimed at making external HashPosition iteration to work like the internal pointer, so we could make it fully independent while keeping most of the current behavior. I fear it would make the implementation even more complicated than it already is. For PHP 7 we have the option to alter the iteration semantics for edge cases a bit (especially interaction of iteration and changes to the array). I'll have to try out some ideas in that direction and report back. Nikita