Re: [RFC] [Discussion] array_match
| From: | youkidearitai | Date: | Sat, 22 Aug 2026 14:41:06 +0000 |
| Subject: | Re: [RFC] [Discussion] array_match | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-132294@lists.php.net to get a copy of this message | ||
2026年8月22日(土) 22:31 سپهر محمودی <sepehrphpr@gmail.com>:
>
>
>
> در تاریخ شنبه ۲۲ اوت ۲۰۲۶، ۱۶:۰۵ youkidearitai
> <youkidearitai@gmail.com> نوشت:
>>
>> 2026年8月22日(土) 21:02 سپهر محمودی
>> <sepehrphpr@gmail.com>:
>> >
>> > Hi everyone,
>> >
>> > As some of you may know, my previous RFC
>> > (
array_search_range) faced significant opposition and feedback. I
>> > have listened to the community and officially withdrawn it. Thank you to everyone who took the time
>> > to review it.
>> >
>> > Today, I would like to introduce a new, much simpler, and highly focused RFC:
>> > array_match()
>> >
>> > Currently, if we want to filter an array to find elements containing a specific
>> > substring, we have to rely on array_filter() combined with a closure
>> > and strpos()/stripos(). This pattern
>> > is not only verbose but also carries the performance overhead of executing a PHP closure for every
>> > single array element.
>> >
>> > I am proposing a native function to handle this efficiently in C:
>> > array_match(array $array, string $needle, bool $ignore_case = false):
>> > array
>> >
>> > This function preserves the original keys, safely casts values to strings, and
>> > provides a clean, intent-revealing syntax. By implementing this internally, we can significantly
>> > improve both readability and execution speed compared to userland polyfills.
>> >
>> > You can find all the use cases and examples detailed on the RFC page:
>> > https://wiki.php.net/rfc/array_match
>> >
>> > I look forward to hearing your thoughts and feedback on this proposal!
>> >
>> > Best regards,
>> > Sepehr Mahmoudi
>> >
>>
>> Hi, Sepehr.
>>
>> I have some questions.
>>
>> - Why need this function? Is not enough in array_filter or array_find?
>> - In GitHub, There are many use cases in same name functions. from:
>>
>> https://github.com/search?q=array_match+language%3APHP&type=code
>> - In past RFC in str_icontains
>> https://wiki.php.net/rfc/str_icontains
>> was declind. So I don't think make sense that "case-insensitive" only
>> ASCII now.
>>
>> For your reference: In big OSS like php-src, We investigate use case first.
>>
>> Regards
>> Yuya
>>
>> --
>> ---------------------------
>> Yuya Hamada (tekimen)
>> - https://tekitoh-memdhoi.info
>> - https://github.com/youkidearitai
>> -----------------------------
>
>
> Hi Yuya,
>
> Thank you for taking the time to review the RFC and share your thoughts!
>
> > - Why need this function? Is not enough in array_filter or array_find?
>
> While array_filter() is great, it requires a Closure for this
> task. For large arrays, the overhead of calling a userland function for every single element is
> significant. array_match() aims to provide a fast, native C
> alternative for a very common operation.
> As for array_find() (introduced in PHP 8.4), it only returns
> the *first* matching element, whereas this proposal filters and returns *all* matching elements.
>
> > - In GitHub, There are many use cases in same name functions. from:
> >
> > https://github.com/search?q=array_match+language%3APHP&type=code
>
> I think the high number of custom array_match implementations
> in userland actually proves how much developers need this functionality! However, you bring up a
> valid point regarding potential name collisions (BC breaks). If
> array_match conflicts with too many existing codebases, I am
> completely open to bikeshedding the name (perhaps
> array_str_contains() or something similar).
>
> > - In past RFC in str_icontains
> > https://wiki.php.net/rfc/str_icontains
> > was declind. So I don't think make sense that "case-insensitive" only
> > ASCII now.
>
> This is a very solid point. If the $ignore_case parameter
> brings up the same ASCII/Unicode complexities that caused str_icontainsëúù�.ԛ«È
> —5J§¶4 to be declined, I am more than happy to drop the $ignore_case
> parameter entirely. A simple, fast, case-sensitive filter would still be highly valuable.
>
> > For your reference: In big OSS like php-src, We investigate use case first.
>
> Understood! I have included a few use cases (like log filtering, simple search, and performance
> optimization over Closures) in the RFC. The GitHub search link you provided is also a great
> testament to real-world usage.
>
> Thanks again for your feedback, it is very helpful.
>
> Best regards,
> Sepehr
>
Hi
> I think the high number of custom array_match implementations
> in userland actually proves how much developers need this functionality
No, Could you read carefully userland code of array_match functions?
array_match is seems a lot of use case in implementation, One of
array_match is uses regex in first parameter,
But other implementation of array_match is not same behavior.
You should read usecases of userland code.
Regards
Yuya
--
---------------------------
Yuya Hamada (tekimen)
- https://tekitoh-memdhoi.info
- https://github.com/youkidearitai
-----------------------------