Konstruktionen match

Konstruktionen match introducerades i PHP 8.0 och erbjuder ett mer koncist och säkert sätt att förgrena jämfört med switch. Den tar ett uttryck för jämförelse och returnerar värdet från det första matchande villkoret. Till skillnad från switch utför match strikt jämförelse (===) och kräver inte break.

Syntax

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

Exempel

Enkel matchning av ett nummer:

php<?php
  $res = match (2) {
    1 => 'Ett',
    2 => 'Två',
    3 => 'Tre',
    default => 'Okänt'
  };
  echo $res;
?>

Resultat av kodkörning:

php'Två'

Exempel

Matchning med flera villkor:

php<?php
  $age = 25;
  $res = match (true) {
    $age < 18 => 'Barn',
    $age >= 18 && $age < 65 => 'Vuxen',
    $age >= 65 => 'Pensionär'
  };
  echo $res;
?>

Resultat av kodkörning:

php'Vuxen'

Exempel

Användning med arrayer:

php<?php
  $arr = [1, 2, 3];
  $res = match ($arr) {
    [1, 2, 3] => 'Första sekvensen',
    [4, 5, 6] => 'Andra sekvensen',
    default => 'Annan sekvens'
  };
  echo $res;
?>

Resultat av kodkörning:

php'Första sekvensen'

Se även

  • operatoren switch,
    som erbjuder ett alternativt sätt att förgrena
  • funktionen if,
    som utför villkorssatser