Par ou Ímpar em PHP: A resposta definitiva com todos os detalhes técnicos que ninguém te contou


Introdução

Saber se um número é par ou ímpar pode parecer uma tarefa trivial — e de fato é. Mas em ambientes de produção, trivialidade mal implementada vira bug silencioso.

Neste post, vamos abordar a verificação de paridade de forma matemática, técnica e segura, como deve ser em um projeto sério.


Definição Matemática

Um número inteiro n é:

  • Par, se existe um inteiro k tal que n = 2k
  • Ímpar, se existe um inteiro k tal que n = 2k + 1

Em PHP (e em praticamente todas as linguagens), usamos o operador módulo % para obter o resto da divisão.


Verificando se um número é par ou ímpar em PHP

Código direto:

function isPar($n) {
    return $n % 2 === 0;
}

function isImpar($n) {
    return $n % 2 !== 0;
}

Exemplo prático:

$numero = 42;

if (isPar($numero)) {
    echo "$numero é par";
} else {
    echo "$numero é ímpar";
}

E se o número for negativo?

Funciona do mesmo jeito.

echo -3 % 2; // Resultado: -1

O -3 é ímpar, e a verificação funciona sem alterações.


E se for um número float?

$numero = 10.5;

echo $numero % 2; // Fatal error (PHP < 8.0) ou Warning

A partir do PHP 8, floats no % são permitidos, mas isso não faz sentido em lógica de paridade. Então, garanta que o número seja inteiro:

function isParSeguro($n) {
    if (!is_int($n)) {
        return false; // ou lançar Exception
    }
    return $n % 2 === 0;
}

E se for uma string com número?

$numero = "8";

echo $numero % 2; // Funciona! PHP converte automaticamente para inteiro

Mas não é boa prática confiar nisso. Tipagem importa.

function isParEstrito($n) {
    if (!is_numeric($n) || (int)$n != $n) {
        return false;
    }
    return ((int)$n % 2) === 0;
}

Benchmarks (simples)

$start = microtime(true);

for ($i = 0; $i < 1000000; $i++) {
    $r = ($i % 2 === 0);
}

echo "Tempo: " . (microtime(true) - $start);

Resultado em uma máquina comum: aproximadamente 0.05 segundos para 1 milhão de verificações. É extremamente rápido e pode ser usado em tempo real sem preocupações.


Boas Práticas

  • Sempre verifique o tipo de entrada, especialmente se o dado vier do usuário
  • Considere criar funções reutilizáveis como isPar() e isImpar()
  • Se o número for float, decida se deve truncar, arredondar ou rejeitar

Validação Completa (Função final)

function isParRobusto($n) {
    if (!is_numeric($n)) return false;
    if ((int)$n != $n) return false;
    return ((int)$n % 2) === 0;
}

Conclusão

Verificar se um número é par ou ímpar em PHP não precisa ser só um if simples. Ao lidar com inputs dinâmicos, banco de dados, APIs ou interfaces públicas, você precisa ser rigoroso.

Trate como um profissional. Um erro em uma verificação “trivial” pode ser tão prejudicial quanto em uma função complexa.

Rolar para cima