go to bug id or search bugs for
array_merge() function returns NULL if any of the arguments are not arrays.
This makes for a lot of boilerplate code / guard clauses, such that I, more often than not, rather end up using foreach for merging instead.
I don't know if I am the only one who expects it to either:
- return a merged array containing all of the valid arrays' keys/values, or
- return a merged array containing all of the valid arrays' keys/values before the first "invalid" argument.
This latter might (or might not) be preferrable on performance considerations.
Please propose a change and/or vote on proposal if this is even possible.
If so, I may make a patch if needed.
EDIT: as this seems similar to #64909, another proposal would be the ability to change the emitted E_WARNING into a catchable fatal error.
This is quite strange that in such case we could catch a java.lang.NullPointerException in Java, but nothing in PHP; quite counter-productive.
var_dump(array_merge(['what', 'ever'], false));
<b>Warning</b>: array_merge(): Argument #2 is not an array in <b>[...][...]</b> on line <b>2</b><br />
Add a Patch
Add a Pull Request
I don't see why array_merge() should behave differently than
array_intersect(), array_diff() etc. (and I wouldn't change them
all), but if you consider that an improvement, feel free to start
the RFC process (see <https://wiki.php.net/rfc/howto>).