PHP supports the spread syntax for variadic functions.
In JavaScript, you can use the spread syntax to do this:
var a = [1, 2]; var b = [...a, 3, 4]; console.log(b); // [1, 2, 3, 4]
However, trying to do this in PHP:
$a = [1, 2]; $b = [...$a, 3, 4]; var_dump($b);die;
Results in this error:
Parse error: syntax error, unexpected ‘…’ (T_ELLIPSIS), expecting ‘]’
Is using the spread syntax this way not allowed in PHP? If so, is there an equally-as-elegant way to achieve the same effect?
Advertisement
Answer
The spread operator in the arrays RFC has been implemented in PHP 7.4:
$ary = [3, 4, 5]; return [1, 2, ...$ary]; // same as [1, 2, 3, 4, 5]
Caveat: The unpacked array/Traversable can only have integer keys. For string keys array_merge()
is still required.