Re: [RFC] [Discussion] array_get and array_has functions
| From: | Hans Krentel | Date: | Sun, 05 Apr 2026 08:13:44 +0000 |
| Subject: | Re: [RFC] [Discussion] array_get and array_has functions | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-130566@lists.php.net to get a copy of this message | ||
On Saturday 04 April 2026 16:06:21 (+02:00), Barel wrote:
> Hi,
>
> I would like to open the discussion on my proposal to add two small,
> focused array functions for retrieving and checking nested array elements
> using dot notation.
>
> This is the link to the RFC:
> https://wiki.php.net/rfc/array_get_and_array_has
>
> This is the link to the proposed implementation:
> https://github.com/php/php-src/pull/21637
>
> Thanks!!
Thank you very much! That’s very interesting, so I have to ask right away: Is there a specific
reason to limit this to strings, integers, and null for arrays, rather than also allowing arrays or
iterables?
This reminds me of JSON Pointers (RFC 6901), which can usually be easily mapped as an iterable with
string keys, which can then be accessed via the holder variable, similar to the foreach example you
already describe in your RFC.
If these two functions supported passing an array/iterable with the traversal keys as a second
parameter, this would be advantageous, since the JSON pointer would then not need to be recoded into
dot notation, but only (if not already done) sliced and passed as an array as the second parameter.
That's why I'm asking.
Interestingly, JSON Pointer solves the “null problem” by prefixing the zero or more reference
tokens (keys) with a slash ‘/’, and it supports all seven types of JSON values without limiting
itself to just JSON arrays or objects. This is just food for thought: array_... are clearly array
functions, so this “restriction” is likely intentional. In PHP, however, I can also imagine
iterables that resemble what you’ve already described in your RFC, and from there it’s not far
to the holder object we see in JSON and JSON Pointer. So please don’t confuse my “request”
regarding arrays/iterables with the first parameter; it’s simply about passing the key as a keys,
which is a small improvement over dot notation.
With arrays in PHP, users will likely prefer the non-standard, more custom dot notation, and
that’s perfectly fine. I saw many people asking for this in the early days of Stack Overflow, and
if Symfony/Laravel have it as well, that’s just another strong indication of such a preference.
Thanks again for your RFC
--hakre
P.S. Work on the RFC documentation for JSON Path finally began in 2020, and it was published in
February 2024. The standard has its roots in PHP and JavaScript, and perhaps it’s time for PHP to
expand its standard library with such features at the same pace we did with JSON. Your RFC seems
well-suited for this purpose. Thanks again.