โครงสร้าง match

โครงสร้าง match ปรากฏใน PHP 8.0 และให้วิธีการแบ่งสาขาที่สั้นกว่าและปลอดภัยกว่าเมื่อเทียบกับ switch มันรับนิพจน์สำหรับการเปรียบเทียบและส่งคืนค่าแรกที่ตรงกับเงื่อนไข ต่างจาก switch, match ทำการเปรียบเทียบแบบเข้มงวด (===) และไม่ต้องการ break

ไวยากรณ์

php$result = match ($value) {
  condition1 => result1,
  condition2 => result2,
  ...
  default => default_result
};

ตัวอย่าง

การจับคู่ตัวเลขแบบง่าย:

php<?php
  $res = match (2) {
    1 => 'One',
    2 => 'Two',
    3 => 'Three',
    default => 'Unknown'
  };
  echo $res;
?>

ผลลัพธ์จากการรันโค้ด:

php'Two'

ตัวอย่าง

การจับคู่กับหลายเงื่อนไข:

php<?php
  $age = 25;
  $res = match (true) {
    $age < 18 => 'Child',
    $age >= 18 && $age < 65 => 'Adult',
    $age >= 65 => 'Senior'
  };
  echo $res;
?>

ผลลัพธ์จากการรันโค้ด:

php'Adult'

ตัวอย่าง

การใช้กับอาร์เรย์:

php<?php
  $arr = [1, 2, 3];
  $res = match ($arr) {
    [1, 2, 3] => 'First sequence',
    [4, 5, 6] => 'Second sequence',
    default => 'Other sequence'
  };
  echo $res;
?>

ผลลัพธ์จากการรันโค้ด:

php'First sequence'

ดูเพิ่มเติม

  • ตัวดำเนินการ switch,
    ซึ่งให้วิธีการแบ่งสาขาแบบอื่น
  • ฟังก์ชัน if,
    ซึ่งทำการประมวลผลตามเงื่อนไข