0Pricing
PHP Academy · Aula

Instruções switch e match

Use switch e match do PHP 8 para lógica com vários caminhos.

Instruções switch e match é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

Switch vs Cadeias de if

Quando você tem muitas ramificações baseadas no valor de uma única variável, switch é mais limpo do que uma cadeia longa de if/elseif.

O PHP 8 introduziu match como uma alternativa moderna e estrita.

Noções Básicas da Instrução switch

Switch avalia sua expressão uma vez e executa o bloco do case correspondente:

<?php
$day = 'Monday';

switch ($day) {
    case 'Monday':
        echo 'Start of work week';
        break;
    case 'Friday':
        echo 'Almost weekend';
        break;
    default:
        echo 'Midweek';
}

Comportamento de Passagem ao Próximo Case

Sem break, a execução continua no case seguinte — um recurso útil para agrupar casos intencionalmente:

<?php
$status = 2;

switch ($status) {
    case 1:
    case 2:
    case 3:
        echo 'In progress';  // runs for 1, 2, or 3
        break;
    case 4:
        echo 'Done';
        break;
}

Switch Usa Comparação Flexível

Switch usa == (comparação flexível) internamente — isso pode causar correspondências surpreendentes:

<?php
$val = 0;

switch ($val) {
    case 'foo':   // 0 == 'foo' in PHP 7!
        echo 'match foo';
        break;
    case 0:
        echo 'match zero';  // PHP 8 fixes this
        break;
}
// PHP 8: match zero (fixed)
// PHP 7: match foo (bug!)

Expressão match do PHP 8

match é semelhante a switch, mas usa comparação estrita, retorna um valor e não exige break:

<?php
$status = 'active';

$label = match($status) {
    'active'   => 'Currently active',
    'inactive' => 'Not active',
    'pending'  => 'Awaiting activation',
    default    => 'Unknown status',
};

echo $label; // Currently active

match sem Correspondência e com Exceção

Se nenhum ramo corresponder em match e não houver um default, será lançada a exceção UnhandledMatchError:

<?php
$code = 99;

try {
    $result = match($code) {
        200 => 'OK',
        404 => 'Not Found',
        500 => 'Server Error',
        // no default!
    };
} catch (\UnhandledMatchError $e) {
    echo 'Unhandled match value: ' . $code;
}

match com Várias Condições

Um único ramo de match pode listar vários valores separados por vírgulas:

<?php
$lang = 'tr';

$region = match($lang) {
    'en', 'en-US', 'en-GB' => 'English',
    'tr', 'az'             => 'Turkic',
    'fr', 'be', 'ca'       => 'French-speaking',
    default                => 'Other',
};

echo $region; // Turkic

match com Expressões Complexas

Os ramos de match podem usar expressões arbitrárias no lado direito:

<?php
$score = 85;

$grade = match(true) {
    $score >= 90 => 'A',
    $score >= 80 => 'B',  // matches
    $score >= 70 => 'C',
    default      => 'F',
};

echo $grade; // B

Retorno a partir de match

Como match é uma expressão, ele pode ser usado em qualquer lugar onde um valor seja esperado:

<?php
function getHttpMessage(int $code): string {
    return match($code) {
        200 => 'OK',
        201 => 'Created',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        404 => 'Not Found',
        default => 'Unknown',
    };
}

echo getHttpMessage(404); // Not Found

switch em um Contexto de Retorno

Switch pode ser usado dentro de uma função para retornar valores diferentes, mas match é mais limpo:

<?php
function describe(int $n): string {
    switch (true) {
        case $n < 0:  return 'negative';
        case $n === 0: return 'zero';
        default:       return 'positive';
    }
}

echo describe(-5);  // negative
echo describe(0);   // zero
echo describe(7);   // positive

Quando Usar switch ou match

Orientações para escolher:

  • Use match quando precisar de comparação estrita e de um valor de retorno (PHP 8+)
  • Use switch para agrupamentos com passagem ao próximo case ou ao oferecer suporte ao PHP 7
  • Ambos são mais limpos do que cadeias longas de if/elseif para ramificações com vários valores

Verificação Rápida

O que acontece em uma expressão match quando nenhum ramo corresponde e não há um valor padrão?

Recapitulação: switch e match

Principais diferenças:

  • switch — comparação flexível, passagem ao próximo case, PHP 4+
  • match — comparação estrita, sem passagem ao próximo case, retorna um valor, PHP 8+
  • Match lança UnhandledMatchError quando não há valor padrão
  • Os ramos de match aceitam vários valores separados por vírgulas

A seguir: laços for e while.

Perguntas Frequentes

A aula “Instruções switch e match” é grátis?

Sim — o texto completo de “Instruções switch e match” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Instruções switch e match”?

Use switch e match do PHP 8 para lógica com vários caminhos. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Instruções switch e match”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. if, elseif e else
  2. Instruções switch e match
  3. Laços for e while
  4. foreach e controle de laços
← Voltar para PHP Academy