Re: [RFC] [Discussion] array_get and array_has functions

From: Date: Sun, 05 Apr 2026 10:52:12 +0000
Subject: Re: [RFC] [Discussion] array_get and array_has functions
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-130574@lists.php.net to get a copy of this message
On Sunday 05 April 2026 11:43:03 (+02:00), Barel wrote: > On Sun, 5 Apr 2026 at 10:13, Hans Krentel <hanskrentel@yahoo.de> wrote: > > > > > 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. > > > > Thanks for your comments. Someone else already suggested allowing arrays > for the $key parameter and I am considering it, I think it will probably be > a good addition Yes, I agree, and I suggest we also consider _iterable_ as part of this discussion. Thank you Carlos as well for your work on these functions. --hakre

« previous php.internals (#130574) next »