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

Problema com a função in_array do PHP

olá!!! Eis meu problema:

Estou criando um sistema de cadastro de clientes com PHP, a cada cliente que eu crio estou tentando validar o CPF para ver se este já esta em uso no sistema, isso ocorre através do seguinte código:

$cpfs = $usuarioDao->buscaCPFs();
$validadeCpf = $usuarioDao->verificaUsoCpf($usuario, $cpfs);

As funções que estão sendo chamadas são as seguintes:

    public function buscaCPFs(){
        $cpfs = [];
        $query = "select cpf from usuarios";
        $resultado = mysqli_query($this->conexao, $query);
        while ($cpf = mysqli_fetch_assoc($resultado)) {
            array_push($cpfs, $cpf);
        }
        return $cpfs;
    }

    public function verificaUsoCpf($usuario, $cpfs){
        if ($usuario->temCpf()){
            return in_array($usuario->getCpf(), $cpfs);
        }
        return false;
    }

A grande questão é a seguinte: mesmo com o cpf estando registrado a função in_array me retorna false, gostaria de saber o que está ocorrendo e como posso resolver, agradeço desde já pela ajuda =)

PS: o if funciona normalmente, já verifiquei se o problema era ele

2 respostas
solução!

Oi Gabriel, meu grande chute é na forma como você preenche esse array de cpfs. Lembra que o fetch_assoc sempre vai te retornar um array? Considerando isso, o array cpfs, não é um array comum, mas sim uma matriz (array de arrays). Então eu mudaria:

while ($resultados = mysqli_fetch_assoc($resultado)) {
            array_push($cpfs, $resultados['cpf']);
}

Faz sentido?

Era isso mesmo, funcionou agora, obrigado pela ajuda

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