1
resposta

Descobrir outras maneirass de realizar IF ELSE

Boa Tarde, Tenho um pequeno código que está passando por POST 2 filtros de busca e cada Filtro possuem 3 opções onde apenas 2 são validadas que dependendo da condição passa na variável um novo script sql. Existe alguma forma de trabalhar com esse modelo sem usar esses if else??

if($post){ $postData = json_decode($post);

            $filtroEAN      = $postData->rpttype;
            $filtroOP       = $postData->groupby;

            if (!empty($postData->ncmCpt)) {
                $cWhere = 'AND LEFT(ncm_codigo, 2) = '.$postData->ncmCpt.'';
            } 

           if($filtroEAN == 'R'){
                $cWhere .= " AND cpd_ean NOT REGEXP '[a-z]' 
                            AND LENGTH(TRIM(LEADING '0' FROM replace(replace(replace(cpd_ean,'/',''),'-',''),'.',''))) >= 8";
            }elseif($filtroEAN == 'T'){
                $cWhere .= " AND LENGTH(TRIM(LEADING '0' FROM replace(replace(replace(cpd_ean,'/',''),'-',''),'.',''))) < 8";
            }

            if($filtroOP == 'E'){
                $cWhere .= " AND cpd_cnpj_for != cli_cnpj AND cpd_cnpj_for <> ''";
            }elseif($filtroOP == 'S'){
                $cWhere .= " AND cpd_cnpj_for = cli_cnpj AND cpd_cnpj_for <> ''";
            }
        }
1 resposta

Bom dia Thifani, tudo bem?

Caso você ache interessante, você pode fazer uso de ternários nesse caso. Vou deixar um exemplo abaixo de como utilizar essa forma de validação para o primeiro IF do seu código:

// Perceba o uso do "." antes da igualdade, assim estou concatenando o resultado do ternário à variável "cWhere"
$cWhere .= !empty($postData->ncmCpt) ? 'AND LEFT(ncm_codigo, 2) = '.$postData->ncmCpt : '';

Segue um link de um artigo da Alura que fala sobre esse operador: https://www.alura.com.br/artigos/o-que-e-o-operador-ternario.

Espero ter ajudado, abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software