PHP 8.1 เพิ่มการรองรับ Array unpacking ด้วย string keys

ตั้งแต่ PHP 7.4 ได้มีการรองรับการทำ array unpack อยู่แล้ว ซึ่งมีความสามารถเหมือน Object spreading ใน javascript แต่ว่ารองรับการใช้งานเฉพาะกรณีที่ key เป็น integer เท่านั้น ใน PHP 8.1 ได้เพิ่มการรองรับ array unpack แบบที่ใช้ string เป็น key ได้แล้ว
array unpack ใน PHP 7.4 ใช้ได้กับ array ที่มี key เป็น integer เท่านั้น
[1, ...[2, 3, 4], 5]
// ผลลัพธ์
[1, 2, 3, 4, 5]
แต่ถ้าเราต้องการรวม array ที่มี key เป็น String ใน PHP 7.4 เราต้องใช้ function array_merge
แบบนี้
$defaults = ["a" => 1, "b" => 2];
$input = ["a" => 3];
// PHP 7.4
$actual = array_merge($defaults, $input);
ตั้งแต่ PHP 8.1 เราสามารถใช้ array unpack เขียนแบบนี้ได้
// ใช้แบบนี้:
$actual = [...$defaults, ...$input];
// หรือแบบนี้ก็ได้
$actual = ["a" => 1, "b" => 2, ...$input];
// สามารถแทรกระหว่างกลาง array ได้เช่นกัน
['a' => 1, ...['b' => 2, 'c' => 3], 'd' => 4]
// ผลลัพธ์
['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]
โดยผลลัพธ์จากการทำ array unpack จะเหมือนกับการเรียกใช้ function array_merge แต่จะทำให้ code ของเราดู clean ขึ้นมากเลยทีเดียว