Thanks Rowan. I can appreciate that rationale.

Also let’s me in on why we might want to have an indexed array that is not 
necessarily sequential - but are integers.

Thanks again.

Cheers,
Josh

> On Aug 17, 2020, at 4:17 AM, Rowan Tommins <rowan.coll...@gmail.com> wrote:
> 
> On Mon, 17 Aug 2020 at 05:19, Michael Voříšek - ČVUT FEL <
> voris...@fel.cvut.cz> wrote:
> 
>> This seems almost as a bug, strict types should apply also for array key
>> which is currently not the case.
>> 
>> https://3v4l.org/epv5s
> 
> 
> 
> No, it really shouldn't. In hindsight, "strict_types" was a bad name for
> that directive; it is not a catch-all "make the type system stricter" flag,
> it changes one specific piece of logic: when passing a scalar value to a
> function parameter annotated with a different scalar type, should the value
> be automatically cast, or require a manual cast. There is no function call
> in that code example, so the directive has no effect.
> 
> 
> The reason PHP treats $foo[42] as referring to the same element as
> $foo['42'] is to support this straight-forwardly useful code:
> 
> $options = [
>    1 => 'apple',
>    2 => 'orange',
>    3 => 'banana',
>    4 => 'caramel',
> ];
> $selected_option = $options[ $_GET['id'] ] ?? 'vanilla';
> 
> 
> Casting between arrays and objects is a whole separate issue, and changed
> in PHP 7.2; the RFC explains the issues quite well:
> https://wiki.php.net/rfc/convert_numeric_keys_in_object_array_casts
> 
> 
> Regards.
> -- 
> Rowan Tommins
> [IMSoP]

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to