A estrutura match

A estrutura match foi introduzida no PHP 8.0 e fornece uma maneira mais concisa e segura de fazer ramificações em comparação com o switch. Ela recebe uma expressão para comparação e retorna o valor da primeira condição correspondente. Diferente do switch, o match realiza uma comparação estrita (===) e não requer break.

Sintaxe

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

Exemplo

Correspondência simples de um número:

php<?php
  $res = match (2) {
    1 => 'Um',
    2 => 'Dois',
    3 => 'Três',
    default => 'Desconhecido'
  };
  echo $res;
?>

Resultado da execução do código:

php'Dois'

Exemplo

Correspondência com múltiplas condições:

php<?php
  $age = 25;
  $res = match (true) {
    $age < 18 => 'Criança',
    $age >= 18 && $age < 65 => 'Adulto',
    $age >= 65 => 'Idoso'
  };
  echo $res;
?>

Resultado da execução do código:

php'Adulto'

Exemplo

Uso com arrays:

php<?php
  $arr = [1, 2, 3];
  $res = match ($arr) {
    [1, 2, 3] => 'Primeira sequência',
    [4, 5, 6] => 'Segunda sequência',
    default => 'Outra sequência'
  };
  echo $res;
?>

Resultado da execução do código:

php'Primeira sequência'

Veja também

  • a declaração switch,
    que fornece uma maneira alternativa de ramificação
  • a declaração if,
    que executa declarações condicionais