That sentence was about "foreach by value". "foreach by reference" in your example will still work as expected :)
Thanks. Dmitry. On Fri, Jan 30, 2015 at 2:07 PM, Alain Williams <a...@phcomp.co.uk> wrote: > On Fri, Jan 30, 2015 at 11:23:19AM +0400, Dmitry Stogov wrote: > > Hi, > > > > I'd like to start discussion about fixing inconsistent "foreach" > statement > > behavior. > > The implementation is almost done. It not only fixes inconsistencies in a > > defined by RFC way but also improves performance in most usual cases, > > because now foreach by value over array doesn't require array > duplication. > > > > https://wiki.php.net/rfc/php7_foreach > > > > https://github.com/php/php-src/pull/1034 > > > > I'm going to continue work on implementation improvement and may be > fixing > > related behavior of some internal functions when they used on array > > iterated by foreach by reference (e.g. array_unshift()). However, the > > conceptual behavior defined in RFC is not going to be changed anymore. > > I think that I am raising a concern that is not real, but I'll do so > anyway. > > You write: > > This will lead to copy-on-write on attempt of array modification > inside the > loop. As result, we will always iterate over elements of array > originally > passed to foreach, ignoring any possible array changes. > > I think that you mean modification of the array and that this does not > relate to > modification of array elements. Ie will code like the following still work: > > foreach($_POST as &$v) > $v = trim($v); > > Otherwise - good. > > -- > Alain Williams > Linux/GNU Consultant - Mail systems, Web sites, Networking, Programmer, IT > Lecturer. > +44 (0) 787 668 0256 http://www.phcomp.co.uk/ > Parliament Hill Computers Ltd. Registration Information: > http://www.phcomp.co.uk/contact.php > #include <std_disclaimer.h> > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >