Ir para conteúdo
Santos_2015

remover aspas array [RESOLVIDO]

Recommended Posts

tenho array que está sendo preenchido assim:

$dados = array([0] => "Nome",[1] => "SobreNome",[2] => "null");

queria que ficasse dessa forma:

$dados = array([0] => "Nome",[1] => "SobreNome",[2] => null);

pois estou extraindo os valores do array com array_values  pra colocar em um INSERT, os campos que podem ser null são do tipo date(BD mysql),

então tenho que retirar as aspas quando o valor vier null , ou no próprio array, ou após o array_values, alguma sugestão?  

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

$dados = array('Nome', 'SobreNome', 'null');

$novoArray = [];
foreach ($dados as $item){
    if ($item === 'null'){
        $item = null;
    }
    $novoArray[] = $item;
}

print_r($novoArray);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

não consegui chegar ao resultado esperado, esse array, tipo, tenho isso (não é um array):

$valores = 'Nome','SobreNome','null';

monto assim:

explode(",",$valores);

quando coloco no foreach ele não entra no IF

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi boa noite, esse trecho que você postou vai acarretar em um erro:

 

$valores = 'Nome','SobreNome','null';

Estou supondo que a variável $valores corresponde a uma string e que você utiliza junto com o explode() para montar o seu array e depois para fazer o tratamento, sugiro a utilização de uma função ficaria algo como:

<?php 

    function verificaNomeNull($string) {
        $array = explode(',', $string);
        $novoArray = array();

        foreach( $array as $valor )
            $novoArray[] = (mb_strtolower(trim($valor)) == 'null') ? NULL : trim($valor);

        return $novoArray;
    }

    $nomes = 'Nome, Sobrenome1, Sobrenome2, null, NULL, nUlL';

    $array = verificaNomeNull($nomes);
    
    var_dump($array);

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, André Severino disse:

Oi boa noite, esse trecho que você postou vai acarretar em um erro:

 


$valores = 'Nome','SobreNome','null';

Estou supondo que a variável $valores corresponde a uma string e que você utiliza junto com o explode() para montar o seu array e depois para fazer o tratamento, sugiro a utilização de uma função ficaria algo como:


<?php 

    function verificaNomeNull($string) {
        $array = explode(',', $string);
        $novoArray = array();

        foreach( $array as $valor )
            $novoArray[] = (mb_strtolower(trim($valor)) == 'null') ? NULL : trim($valor);

        return $novoArray;
    }

    $nomes = 'Nome, Sobrenome1, Sobrenome2, null, NULL, nUlL';

    $array = verificaNomeNull($nomes);
    
    var_dump($array);

 

 

 Esse valores $valores = 'Nome','SobreNome','null'; é a extração de um array : 

implode(" ',' ", array_values($dados))

estou deixando nesse formato, só que quando valor for null  não pode conter 'aspas simples'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Santos, posta o exemplo inteiro que é mais fácil de acharmos a solução, pra mim está confuso.

 

E como o André disse acima, a forma que está gerando sua string acarretará em erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, marcosmarcolin disse:

Santos, posta o exemplo inteiro que é mais fácil de acharmos a solução, pra mim está confuso.

 

E como o André disse acima, a forma que está gerando sua string acarretará em erro.

 

estou cadastrando dessa forma. os valores estão sendo concatenados com aspas simples.

public function Cadastro(array $dados, $tabela ){        
    $campos  = implode(", ", array_keys($dados) );
    $valores = "'" . implode( "', '", array_values($dados) ) . "'";
    $stmt = $this->pdo->prepare( "INSERT INTO {$tabela} ({$campos}) VALUES ({$valores})" );
    if($stmt->execute()){
        $this->idPessoa = $this->pdo->lastInsertId();
        return true; 
    }else{
        $this->erro = "Erro !!";
        return false; 
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, única de forma de resolver é você percorrer a sua variável/array antes de inserir, procurar a string e substituir, pode utilizar str_replace.

 

Ex se for uma string, se for array você terá que percorrê-lo.

str_replace("'null'", null, $valores);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, marcosmarcolin disse:

str_replace("'null'", null, $valores);

tentei dessa forma, não resolveu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você consegue add essa função ou em outro caso colocar dentro da sua classe e depois tratar os array_keys() e array_values() como no exemplo:

 

<?php

  function verificaNomeNull($array) {
      $novoArray = array();

      $qtd = is_array($array) ? count($array) : 0;
      for( $i=0; $i<$qtd; $i++ )
          $novoArray[] = ((mb_strtolower(trim($array[$i])) == 'null') || (trim($array[$i]) == '')) ? NULL : trim($array[$i]);

      return $novoArray;
  }

  $array = array('Nome', 'Sobrenome', 'Sobrenome2', 'Null', 'NULL', 'nUlL', ''); // array_values()
  $novosValores = verificaNomeNull($array); // verificaNomeNull( array_values($dados) ) || ou add na classe como protected ... dps chama com $this->verificaNomeNull($array)


  var_dump( $novosValores );

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 horas atrás, André Severino disse:

Você consegue add essa função ou em outro caso colocar dentro da sua classe e depois tratar os array_keys() e array_values() como no exemplo:

 


<?php

  function verificaNomeNull($array) {
      $novoArray = array();

      $qtd = is_array($array) ? count($array) : 0;
      for( $i=0; $i<$qtd; $i++ )
          $novoArray[] = ((mb_strtolower(trim($array[$i])) == 'null') || (trim($array[$i]) == '')) ? NULL : trim($array[$i]);

      return $novoArray;
  }

  $array = array('Nome', 'Sobrenome', 'Sobrenome2', 'Null', 'NULL', 'nUlL', ''); // array_values()
  $novosValores = verificaNomeNull($array); // verificaNomeNull( array_values($dados) ) || ou add na classe como protected ... dps chama com $this->verificaNomeNull($array)


  var_dump( $novosValores );

 

 vou ver e testar.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não funcionar a ideia do André, peço que poste a estrutura do array $dados que está chegando na função Cadastro, que aí eu faço testes aqui. Dá um echo '<pre>'; print_r($dados); e posta aqui daí. Vamos resolver isso aí rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tive tempo de fazer uma verificação a fundo, só coloquei:

verificaNomeNull( array_values($dados) )

não me retornou nada, vou ver depois com mais calma, mas pelo que percebi superficialmente a função espera um array, sendo que quando aplico o array_values() o resultado é uma string, mas como falei vou analisar depois com mais calma e retorno com resultado.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 24/06/2019 at 20:13, marcosmarcolin disse:

Se não funcionar a ideia do André, peço que poste a estrutura do array $dados que está chegando na função Cadastro, que aí eu faço testes aqui. Dá um echo '<pre>'; print_r($dados); e posta aqui daí. Vamos resolver isso aí rsrs

 

o array dados é isso:

 

$dados=[];
$dados['nome_produto']   = $_POST['produto'];
$dados['valor_produto']  = $_POST['valor'];
$dados['tipo_produto']   = $_POST['tipo'];

quando chamo o função cadastro passo o array $dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Severino, não obtive resultado com a função acima citada.

 

$dados=[];//preenchendo o array($dados[''] a chave, e $_POST o valor )
$dados['nome_produto']   = $_POST['produto'];
$dados['valor_produto']  = $_POST['valor'];
$dados['tipo_produto']   = $_POST['tipo'];

//função de insert
public function Cadastro(array $dados, $tabela){        
  //  $campos  = implode(", ", array_keys($dados) );
 //   $valores = "'" . implode( "', '", array_values($dados) ) . "'";
   function verificaNomeNull($array) {
      $novoArray = array();

      $qtd = is_array($array) ? count($array) : 0;
      for( $i=0; $i<$qtd; $i++ )
          $novoArray[] = ((mb_strtolower(trim($array[$i])) == 'null') || (trim($array[$i]) == '')) ? NULL : trim($array[$i]);
      return $novoArray;
  }
  echo $novosValores = verificaNomeNull(array_values($dados));

/*$stmt = $this->pdo->prepare( "INSERT INTO {$tabela} ({$campos}) VALUES ({$valores})" );
    if($stmt->execute()){
        $this->idPessoa = $this->pdo->lastInsertId();
        return true; 
    }else{
        $this->erro = "Erro !!";
        return false; 
    }*/
}
//chamando a função inserção
Cadastro(array $dados, 'produtos_cliente' );

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.