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

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

อ้างอิง

Phattarachai Chaimongkol

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

มองหาคนช่วยทำ Web App ใช้ภายในธุรกิจอยู่มั้ยครับ
มีความชำนาญในการพัฒนา Web Application ด้วย Laravel รับพัฒนาโปรเจคให้ผู้ประกอบการ ธุรกิจ SME ทั้งขนาดเล็กและขนาดใหญ่ พัฒนาระบบใช้ในองค์กรทั้งภาครัฐและเอกชน เป็นพาร์ทเนอร์กับบริษัททางด้าน Digital Agency เพื่อพัฒนาโปรเจคให้แก่ลูกค้า ทักเข้ามาพูดคุยกันก่อนได้เลยครับ

เรื่องล่าสุด

Backup ฐานข้อมูลด้วย Laravel อย่างง่าย ๆ ด้วย Spatie DB Snapshots
12 กุมภาพันธ์ 2564
Backup ฐานข้อมูลด้วย Laravel อย่างง่าย ๆ ด้วย Spatie DB Snapshots
วิธีการให้ git จดจำ password โดยไม่ต้องระบุใหม่ทุกครั้ง
12 กุมภาพันธ์ 2564
วิธีการให้ git จดจำ password โดยไม่ต้องระบุใหม่ทุกครั้ง
วิธีการเช็ค Detect Browser ผู้ใช้จาก Laravel
12 กุมภาพันธ์ 2564
วิธีการเช็ค Detect Browser ผู้ใช้จาก Laravel