Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre condicional do IF

Boa tarde pessoal, tudo bem?

Fiz meu IF de verificação do CPF dessa forma

foreach ($cpfs as $cpf){
    $validaCpf = preg_match("/^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/",$cpf,$cpfsValidados);
    if($validaCpf == 1){
        echo "O CPF {$cpf} é válido \n";
    }else{
        echo "O CPF {$cpf} é inválido \n";
    } 
}

Veja, que coloco no condicional ($validaCpf == 1), porém, vejo nas aulas o professor utilizando só a variável no condicional ($validaCpf) sem um "==1"

PHP faz essa associação de true/false automaticamente, precisa colocar obrigatoriamente o condicional completo? Entendo que a lógica é que ele responda só 1 ou 0, então só pode ser um ou outro, mas é um resumo da sintaxe? é correto escrever dessa forma?

Abração!

2 respostas
solução!

Ótima pergunta, Marcelo.

Quando não há uma comparação no if (no seu caso, a comparação é de igualdade com o operador ==) o PHP vai converter a expressão do if em booleano (verdadeiro ou falso). Como preg_match retorna 1 em caso de sucesso, e 1 convertido para booleano é true, a comparação funciona.

Mas a sua forma de fazer é mais explícita e deixa tudo mais claro. Inclusive eu recomendaria fazer $validaCpf === 1 para deixar ainda mais explícito.

Sobre as conversões, vou deixar aqui 2 links para você ver como o PHP converte cada tipo:

  1. https://www.php.net/manual/en/language.types.type-juggling.php
  2. https://www.php.net/manual/en/types.comparisons.php

Show de Bola Vinícius!

Sanou minhas dúvidas!

Obrigado pela atenção, espero continuar vendo teus cursos, tua didática é sensacional!

Abração!