On Saturday 08 April 2023 22:17:14 (+02:00), Niels Dossche wrote:
> However, I think it might be worth adding an optimization for the most
common $x = array_merge($x, ...) case.
If so, then syntax wise I'd throw that suggestion in the ring:
$x[] = ... $y ;
This would allow to adopt existing code (from push one to splat from
iterable); is short; the splat operator in front of where I'd expect it and
the existing semantic of $x[] "append operator" (a.k.a. "push").
Not the idea for multiple operands thought, this might be a bigger upgrade:
$x[] = ... $y , $y[0], ... $z ;
as it would also require to work without the splat operator for reasonable
symmetry:
unset($x);
$x[] = 1;
$x[] = 2, 3;
$x[] = ... range(4, 6), 7;
Semantics still look clear to me, but I can't write an implementation.
And optimization wise ArrayAccess could benefit from a specialization form
then, e.g. ::offsetPush($offset, iteratable $values) which should be
optional, or perhaps even with offsetSet($offset, mixed ...$values) as an
optional upgrade if PHP semantics allow such changes.
Just my 2 cents.
-- hakre
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php