Voici une RFC à propos de la construction de boucle foreach : Fix “foreach” behavior

L’idée de départ de cette proposition était d’améliorer les performances de foreach (autour de 1% de gain pour certaines applications)… Mais, finalement, la RFC s’est plus orientée sur la correction d’incohérences et de comportement indéfinis.

Sans entrer dans les détails (ils sont plutôt techniques) sur cette page, il s’agit en somme d’essayer d’uniformiser quelques cas un peu tordus d’utilisation de foreach en cas d’itérations par valeurs et par références — la RFC liste ces cas, avec des exemples.

Cette RFC a été soumise à deux votes, ouverts le 05 févier 2015 pour être clôturés le 12 février 2015 :

  • le premier concernait directement la RFC, à une majorité des 2/3 des voix,
  • et le second demandait s’il faudrait cesser de modifier le pointeur tableau/objet dans foreach et nécessitait une majorité de 50% +1 voix.

Considérant que PHP 7 est une bonne occasion pour corriger des comportements étranges et apporter un peu de cohérence au langage, nous avons exprimé notre opinion, positive, sur internals@.
Les deux propositions de cette RFC ont été acceptées, toutes deux avec 34 voix pour 1 et une voix contre.