Re: [RFC] array_partition()

From: Date: Tue, 27 Oct 2026 16:24:02 +0000
Subject: Re: [RFC] array_partition()
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-132946@lists.php.net to get a copy of this message
Hi Tim, On 2026-10-27, Tim Düsterhus wrote: > Please do not "top post". Sorry about that, noted. > One hint for the Wiki: Using <php> around code will > perform the proper > escaping, and will also enable syntax highlighting. Thanks, I've switched that bullet to <php>. > Can you please add another "edge case" > example that clearly shows the reference handling behavior to make sure > every reader is aware of the full implications. Done, in a new "By-reference elements" subsection. It shows that writing through the result changes the input (and the other way round), and that a reference which is no longer shared is copied as a plain value. The outputs in the examples come from running them against the implementation. > I'm also not sure, I like the fact that array_partition() > has behavior > that cannot be replicated in userland. I can see the "follow > array_filter()" argument for consistency, but at the same time > array_find() is dropping references (I believe) You're right about array_find(). I checked the other functions in ext/standard to see where array_partition() would fit: keep references: array_filter(), array_diff_key(), array_slice(), array_values(), array_chunk() drop references: array_find(), array_map() So the functions that return part of their input as an array all keep references. array_find() returns a single value, which can't hold a reference anyway. I think the strongest argument for keeping them is that replacing the current array_filter() + array_diff_key() idiom with array_partition() then doesn't change behaviour. That said, your point about userland replicability is fair, and dropping references would be a one-line change. I've added it to "Open Issues" so it gets settled before a vote, and I'm happy to go with whatever the list prefers. Best regards, Ayoub

« previous php.internals (#132946) next »