Hi
Am 2026-04-04 16:06, schrieb Barel:
This is the link to the RFC:
https://wiki.php.net/rfc/array_get_and_array_has
Thank you for your RFC.
I find it not obvious at all that:
- Non-(string|int) path segments will result in the default value being
returned, rather than a TypeError being thrown or just proceeding with
implicit coercion.
- Encountering a non-array value along the path will result in the
default value being returned, rather than an Exception being thrown.
Returning a default value for an existing path element that is not an
array feels like a source of error, particularly when any intermediate
value is an object implementing ArrayAccess.
I would expect the following to hold:
$path = ['foo', 'bar', 'baz'];
array_get($array, $path) === array_get(array_get($array,
array_shift($path), []), $path);
which it will not due to (2).
And the further looking at the examples:
$array = /* … */;
array_has($array, ['product', 'name']);
array_has($array, ['product', 'color']);
Just looking at the code without knowing what the function does, I
probably would have expected it to be either:
1. `in_array()` operating on multiple values that all need to be there.
2. `array_key_exists()` operating on multiple keys that all need to be
there.
But not a “path through the array”.
Best regards
Tim Düsterhus