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

12 กุมภาพันธ์ 2564 เวลาอ่าน 2 นาที
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 ขึ้นมากเลยทีเดียว

อ้างอิง

เรื่องใน
PHP
Phattarachai Chaimongkol

เกี่ยวกับ phattarachai.dev

ผมอ๊อฟนะครับ เป็นผู้ประกอบการอิสระ ที่ปรึกษาทางด้าน Web Application Development ให้แก่องค์กร ธุรกิจ SME และหน่วยงานราชการ
Web Developer ผู้มีใจรักใน Laravel เป็นพาร์ทเนอร์บริษัท Digital Agency ชั้นนำทางด้าน UX/UI เพื่อพัฒนาโปรเจคให้แก่ลูกค้า ผมช่วยสร้างเครื่องมือทางด้าน Web ที่มีคุณภาพให้ผู้ประกอบการดำเนินธุรกิจได้ง่ายขึ้นใช้งานได้จริง เน้นประสบการณ์ ความชำนาญ ผลงานคุ้มค่าเทียบเท่าจ้างงานกับบริษัทใหญ่ ๆ

เรื่องที่เกี่ยวข้อง

มาทำความรู้จักกับ Laravel Pulse
12 กุมภาพันธ์ 2564
มาทำความรู้จักกับ Laravel Pulse
ฟีเจอร์ใน PHP 8 ที่แม้แต่ Javascript ก็ยังไม่มี
12 กุมภาพันธ์ 2564
ฟีเจอร์ใน PHP 8 ที่แม้แต่ Javascript ก็ยังไม่มี
วิธีการดูขนาดโฟลเดอร์บน Ubuntu
12 กุมภาพันธ์ 2564
วิธีการดูขนาดโฟลเดอร์บน Ubuntu