Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

  • 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.