> Le 5 avr. 2025 à 17:51, Niels Dossche <dossche.ni...@gmail.com> a écrit :
> 
> Hi internals
> 
> I'm opening the discussion for the RFC "array_first() and array_last()".
> https://wiki.php.net/rfc/array_first_last
> 
> Kind regards
> Niels


Hi,

I think that this argument is not convincing, and even counterproductive:

* NULL is a rare legitimate value, so the potential for clashing is low

First, it says that it is a “rare” legitimate value, which one can disagree 
with. (I do disagree.)

Second, the way it is formulated, it implies that, when `null` is used in 
array, there will be “clashing”, which is not necessarily the case. (I consider 
that there is almost never a clash, because it is rarely useful to make the 
difference between an explicit `null` and a missing value, and, when it is 
useful, you have almost surely already checked for an empty array upfront.)

I suggest to replace that argument with the two following ones, that doesn’t 
treat arrays with NULL as second class citizens:

* Semantically, NULL represents a missing value. Returning NULL from an empty 
array is not semantically incorrect, but it means that the function doesn’t 
differentiate between a implicit missing value (empty array) and an explicit 
missing value (array with NULL as its first/last element).

* In the relatively rare cases you do want to make the difference between an 
empty array and an array that starts/ends with NULL, you can (and should) just 
check for empty array upfront.

-------

One more thing. On https://www.php.net/, I read: “Fast, flexible and pragmatic, 
PHP powers everything from your blog to the most popular websites in the 
world.” (emphasis added). If we were to design some new perfect language, we 
might consider making `array_first()` (or equivalent) choke on empty arrays. 
But given the current state of the affairs, the pragmatic thing to do is to 
pave the cowpath.

—Claude

Reply via email to