Check if item exists in array

0

I have this object.

stdClass Object
(
    [assessoria_id] => 1
    [id] => 3
    [nome] => wagner.fillio
    [cpf] => 00000000000
    [login] => wagner.fillios
    [ramal] => 123
    [pin] => 123
    [reset_senha] => 
    [sistema] => 
    [ativo] => 1
    [email] => Array
        (
            [0] => stdClass Object
                (
                    [pessoa_id] => 3
                    [id] => 13
                    [email] => [email protected]
                    [observacao] => 
                    [preferencial] => 1
                    [ativo] => 1
                    [origem_dados_id] => 1
                    [crud] => R
                )

        )

    [unidade] => stdClass Object
        (
            [_empty_] => 
        )

    [view] => stdClass Object
        (
            [equipe] => 61 a 90
        )

)

And this function:

public function atualizar($where, $dados)
    {
        print_r($dados);        
        $operador = [
            'ope_nome'        => $dados->nome,
            'ope_cpf'         => $dados->cpf,
            'ope_login'       => $dados->login,         
            //'ope_senha'       => $dados->senha,           
            'ope_ramal'       => $dados->ramal,
            'ope_pin'         => $dados->pin,
            'ope_reset_senha' => $dados->reset_senha,
            'ope_ativo'       => $dados->ativo,
        ];

        $this->db->update($this->tb_operador, $operador, $where);
        return $this->db->affected_rows();
    }

I need to identify if this object has a $senha item. Can I do this?

public function atualizar($where, $dados)
    {
        print_r($dados);        
        $operador = [
            'ope_nome'        => $dados->nome,
            'ope_cpf'         => $dados->cpf,
            'ope_login'       => $dados->login,

            if(in_array($dados->senha, $dados)
            {
                'ope_senha'  => $dados->senha,  
            }

            //'ope_senha'       => $dados->senha,           
            'ope_ramal'       => $dados->ramal,
            'ope_pin'         => $dados->pin,
            'ope_reset_senha' => $dados->reset_senha,
            'ope_ativo'       => $dados->ativo,
        ];

        $this->db->update($this->tb_operador, $operador, $where);
        return $this->db->affected_rows();
    }
    
asked by anonymous 29.01.2018 / 16:34

2 answers

1

Using isset

public function atualizar($where, $dados)
{
    if (!isset($dados->senha)) {
        return 'Falta o campo senha';
    }

    $operador = [
        'ope_nome'        => $dados->nome,
        'ope_cpf'         => $dados->cpf,
        'ope_login'       => $dados->login,         
        //'ope_senha'       => $dados->senha,           
        'ope_ramal'       => $dados->ramal,
        'ope_pin'         => $dados->pin,
        'ope_reset_senha' => $dados->reset_senha,
        'ope_ativo'       => $dados->ativo,
    ];

    $this->db->update($this->tb_operador, $operador, $where);
    return $this->db->affected_rows();
}

Or with empty that will check if it is empty:

public function atualizar($where, $dados)
{
    if (empty($dados->senha)) {
        return 'Falta o campo senha';
    }

    $operador = [
        'ope_nome'        => $dados->nome,
        'ope_cpf'         => $dados->cpf,
        'ope_login'       => $dados->login,         
        //'ope_senha'       => $dados->senha,           
        'ope_ramal'       => $dados->ramal,
        'ope_pin'         => $dados->pin,
        'ope_reset_senha' => $dados->reset_senha,
        'ope_ativo'       => $dados->ativo,
    ];

    $this->db->update($this->tb_operador, $operador, $where);
    return $this->db->affected_rows();
}

It might be interesting to use Exceptions , for example:

public function atualizar($where, $dados)
{
    if (empty($dados->senha)) {
        throw new Exception('Falta o campo senha');
    }

    $operador = [
        'ope_nome'        => $dados->nome,
        'ope_cpf'         => $dados->cpf,
        'ope_login'       => $dados->login,         
        //'ope_senha'       => $dados->senha,           
        'ope_ramal'       => $dados->ramal,
        'ope_pin'         => $dados->pin,
        'ope_reset_senha' => $dados->reset_senha,
        'ope_ativo'       => $dados->ativo,
    ];

    $this->db->update($this->tb_operador, $operador, $where);
    return $this->db->affected_rows();
}

And at the moment of using:

try {
    $objeto->atualizar({
       ...  
    ));

    //... continua aqui se não falhar
} catch ($ee) {
    echo 'Erro: ',  $ee->getMessage(), "\n";
}

If you want to add the item just use it like this:

public function atualizar($where, $dados)
{
    $operador = [
        'ope_nome'        => $dados->nome,
        'ope_cpf'         => $dados->cpf,
        'ope_login'       => $dados->login,              
        'ope_ramal'       => $dados->ramal,
        'ope_pin'         => $dados->pin,
        'ope_reset_senha' => $dados->reset_senha,
        'ope_ativo'       => $dados->ativo,
    ];

    if (isset($dados->senha)) {   
        $operador['ope_senha'] = $dados->senha;
    }

    $this->db->update($this->tb_operador, $operador, $where);
    return $this->db->affected_rows();
}
    
29.01.2018 / 16:42
1

You can also use isset as follows:

public function atualizar($where, $dados)
{
    print_r($dados);

    $operador = [
        'ope_nome'        => $dados->nome,
        'ope_cpf'         => $dados->cpf,
        'ope_login'       => $dados->login,
        //'ope_senha'       => $dados->senha,           
        'ope_ramal'       => $dados->ramal,
        'ope_pin'         => $dados->pin,
        'ope_reset_senha' => $dados->reset_senha,
        'ope_ativo'       => $dados->ativo,
    ];

    if(isset($dados->senha)) {
        $operador['ope_senha']  => $dados->senha,  
    }

    $this->db->update($this->tb_operador, $operador, $where);
    return $this->db->affected_rows();
}

In this way, if $dados->senha exists, it will add the index "ope_password" in the array $operador

    
29.01.2018 / 16:46