Hi Nikita, On Mon, Jan 11, 2021, 15:29 Nikita Popov <nikita....@gmail.com> wrote:
> Hi internals, > > I would like to present a draft RFC for allowing object keys in arrays: > https://wiki.php.net/rfc/object_keys_in_arrays > > The specification in the RFC is incomplete, and primarily focussed on what > impact this has from an internal perspective. > https://github.com/php/php-src/pull/6588 is a draft implementation that > illustrates the necessary changes. > > The primary motivation, and reason why I am looking into this now, is that > the current enum proposal is based on objects, and I consider it somewhat > important that enum values can also work as array keys. > > From a technical perspective, this also lays the groundwork for supporting > other key types in the future, e.g. if we wish to switch PHP to use > arbitrary-precision integers. > Overall, this is something I always wanted, but adding it means that the type of all array functions returning keys widens, which is quite the BC hell 🤔 The basic assumption is that, when an `array` is given, `foreach ($array as $key => )` produces a `$key` if type `string|int`. While this assumption does not hold true for `iterable` (notably `SplObjectStorage`, `Generator`), it's still quite a jump to break it here, so it would probably require scheduling such a feature for 9.0. >