<?php
# Forget array_merge PHP 7.4 Spread Operator in Array Expression.
# ONLY FOR PHP 7.4 +
#/!\ PERFORMANCE BEST PRACTIVE /!\
$args = ['foo', 'bar', 'baz'];
$arr = [...$args, 'buz'];
var_dump($arr);
# MULTIPLE SPREAD
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
var_dump($arr4);
# SPREAD WITH FUNCTION
function buildArray()
{
return ['red', 'green', 'blue'];
}
$arr5 = [...buildArray(), 'pink', 'violet', 'yellow'];
var_dump($arr5);
# SPREAD WITH GENERATOR
function generator() {
for ($i = 3; $i <= 5; $i++) {
yield $i;
}
}
$arr6 = [0, 1, 2, ...generator()];
var_dump($arr6);
# SPEACIAL USECASE WHEN YOU NEED TO UNPACK ELEMENT WITH REFERENCE
# $arr1 = ['red', 'green', 'blue'];
# $arr2 = [...&$arr1];
# This will throw a syntax error because ...& isn't supported yet
# To do that you will use another way like this :
$arr7 = 'red';
$arr8 = [&$arr7, 'green', 'blue'];
$arr9 = ['white', ...$arr8, 'black'];
var_dump($arr9);
- Output for 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- array(4) {
[0]=>
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(3) "baz"
[3]=>
string(3) "buz"
}
array(12) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(1)
[4]=>
int(2)
[5]=>
int(3)
[6]=>
int(4)
[7]=>
int(5)
[8]=>
int(6)
[9]=>
int(7)
[10]=>
int(8)
[11]=>
int(9)
}
array(6) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
[2]=>
string(4) "blue"
[3]=>
string(4) "pink"
[4]=>
string(6) "violet"
[5]=>
string(6) "yellow"
}
array(6) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
[5]=>
int(5)
}
array(5) {
[0]=>
string(5) "white"
[1]=>
&string(3) "red"
[2]=>
string(5) "green"
[3]=>
string(4) "blue"
[4]=>
string(5) "black"
}
- Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33
- Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /in/hfFZm on line 9
Process exited with code 255.
preferences:
131.29 ms | 408 KiB | 5 Q