On 4/8/25 8:46 PM, Claude Pache wrote:
> 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.)
> 

I think it's a matter of phrasing, but I agree that it can be more nuanced.

> 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.
> 

That's indeed a bit better worded and more nuanced. I might adapt the RFC text 
a bit; although in the end it kinda means the same thing anyway.

> -------
> 
> 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.

I agree. I value consistency; we have too much inconsistency already in PHP 
anyway, let's not add more (unless we would have a very very good reason to do 
so; but that's not in this case IMO).

Reply via email to