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.

>

Reply via email to