Re: [Pre-RFC] Null coalescing associative array elements

From: Date: Fri, 29 May 2026 16:58:09 +0000
Subject: Re: [Pre-RFC] Null coalescing associative array elements
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-131064@lists.php.net to get a copy of this message
Thanks for the feedback! пт, 29 мая 2026 г., 19:06 Larry Garfield <larry@garfieldtech.com>: > My first thought is that the current code, which assigns potentially null values, works fine if > you throw an array_filter() at it at the end. > > $array = [ > 'field1' => $param1, > 'field2' => $param2, > 'field3' => $param3_which_is_null, > ]; > > $a = array_filter($array); > // $a now omits the null fields array_filter will only cover the cases when you need to filter all fields by the same criteria (null's in this case). But it does not fit the case when you still have some mandatory fields even if they are null, but some are optional. At least in the simplest form, but otherwise in more complex forms we'll still come up with additional code. > My second thought is that this is yet another reason why using associative arrays as if they > were a data structure is wrong and should be avoided; just use a class and everything will be fine. > If you need to serialize it later, there's many serializers on the market if JsonSerialize > isn't sufficient. Wrong or not, using arrays as an intermediate for serializing is still very common. Also, it is a common case when developers have their in-house serialization mechanisms. But whatever serialization you use, the serialization library by itself will still need to perform corresponding "if"'s or other logic to conditionally include/exclude the fields. So, such feature can prove useful for serialization libraries themselves. Another thing is that we don't only work with production-ready code which presumably already has or should have a proper "infrastructure" for serialization. We can still work with some draft or MVP projects where we need to do things fast and simple first. And such feature can prove handy.

« previous php.internals (#131064) next »