Costrutto match

Il costrutto match è apparso in PHP 8.0 e fornisce un modo più conciso e sicuro per ramificare rispetto a switch. Accetta un'espressione per il confronto e restituisce il valore della prima condizione corrispondente. A differenza di switch, match esegue un confronto stretto (===) e non richiede break.

Sintassi

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

Esempio

Semplice corrispondenza di un numero:

php<?php
  $res = match (2) {
    1 => 'Uno',
    2 => 'Due',
    3 => 'Tre',
    default => 'Sconosciuto'
  };
  echo $res;
?>

Risultato dell'esecuzione del codice:

php'Due'

Esempio

Corrispondenza con più condizioni:

php<?php
  $age = 25;
  $res = match (true) {
    $age < 18 => 'Bambino',
    $age >= 18 && $age < 65 => 'Adulto',
    $age >= 65 => 'Anziano'
  };
  echo $res;
?>

Risultato dell'esecuzione del codice:

php'Adulto'

Esempio

Utilizzo con gli array:

php<?php
  $arr = [1, 2, 3];
  $res = match ($arr) {
    [1, 2, 3] => 'Prima sequenza',
    [4, 5, 6] => 'Seconda sequenza',
    default => 'Altra sequenza'
  };
  echo $res;
?>

Risultato dell'esecuzione del codice:

php'Prima sequenza'

Vedi anche

  • operatore switch,
    che fornisce un modo alternativo di ramificazione
  • funzione if,
    che esegue istruzioni condizionali