Ir para conteúdo

Arquivado

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

AyrtonMaia

Juntar arrays em uma única variável

Recommended Posts

Fala, galera. O seguinte, tô com um formulário e nele tenho 3 inputs de números, que são enviados via post. Tô precisando unir esses 3 inputs, separá-los com um ponto e guardá-los em uma única variável para inseri-la no banco de dados. Minha dificuldade está em juntar esses 3 inputs, já tentei usar o array_merge, mas acho que estou deixando falhar na programação. Também já pesquisei sobre o tema no fórum mas não encontrei nada, talvez tenha pesquisado  com o tema errrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é o seu formulário html?


Se estiver passando em formato de array, isso resolve:

$campo = implode('.', $_POST['xpto']);

Se não, basta concatenar:

$campo = sprintf(%s.%s.%s, $_POST['xptoUm'], $_POST['xptoDois'], $_POST['xptoTres']);

 

Considere xpto o nome que você colocou no name do formulário
 

http://php.net/manual/pt_BR/language.operators.string.php

http://php.net/manual/pt_BR/function.implode.php

http://php.net/manual/pt_BR/function.sprintf.php

Compartilhar este post


Link para o post
Compartilhar em outros sites
<input name="valor[]" value="numero um">
<input name="valor[]" value="numero dois">
<input name="valor[]" value="numero tres">
$inputs = $_POST['valor']; //Valores unidos em matriz/array
echo $inputs[0]."<BR>"; //valor do input 1
echo $inputs[1]."<BR>"; //valor do input 2
echo $inputs[2]."<BR>"; // valor do input 3

 

Resolução:

Aplique colchetes "[]" no name="" dos inputs (todos os names devem ser iguais) para que no momento do POST, todos os inputs deste tipo, sejam armazenados num array para que você possa trata-los individualmente ou em grupo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, o formulário é basicamente:

<form method="post" action="">
  <input type="text" name="aposta[]"> . <input type="text" name="aposta[]" . <input type="text" name="aposta[]">
  <input type="submit" value="apostar">
</form>

preciso que esses 3 inputs se unam em uma única variável para eu poder fazer o insert. Tentei dessas duas formas que os amigos indicaram, mas não deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for o caso de formulário ficaria mais ou menos assim:

<?php
$entrada_a = 'Nome-1';
$entrada_b = 'Nome-2';
$entrada_c = 'Nome-3';

$saida = '';
$saida .= $entrada_a;
$saida .= '.';
$saida .= $entrada_b;
$saida .= '.';
$saida .= $entrada_c;

echo $saida;

// Resultado vai ser uma (string): Nome-1.Nome-2.Nome-3

Se for um caso que realmente precisar de uma array:

<?php
$entrada_a = 'Nome-1';
$entrada_b = 'Nome-2';
$entrada_c = 'Nome-3';

$saida = [];
$saida[] = ['ponto' => '.'];
$saida[] = ['resultado' => $entrada_a];
$saida[] = ['resultado' => $entrada_b];
$saida[] = ['resultado' => $entrada_c];

echo "<pre>";
var_dump($saida);
echo "</pre>";

 

Só que seu formulário tá errado porque você nunca deve repetir um identificados no caso "name" nunca se pode ter dois name's com o mesmo resultado. Veja:

Spoiler

<form method="post" action="">
  <input type="text" name="aposta_a">
  <input type="text" name="aposta_b">
  <input type="text" name="aposta_c">
  <input type="submit" value="apostar">
</form>

 

 

No seu arquivo php que receberá o post.

Spoiler

<?php
$post = (object) filter_input_array((htmlspecialchars(INPUT_POST)), FILTER_DEFAULT);

$resultado = '';
$resultado .= $post->aposta_a;
$resultado .= '.';
$resultado .= $post->aposta_b;
$resultado .= '.';
$resultado .= $post->aposta_c;

echo $resultado;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descartando o problema de não conseguir unir as três variáveis, tenho a impressão de que você quer uní-las por causa de um problema de modelagem.

 

No seu caso, basta adicionar à primeira forma normal (1FN).

 

Leia abaixo:

https://pt.wikipedia.org/wiki/Normalização_de_dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por marsolim
      Olá a todos. Venho com um probleminha para o qual não encontrei resposta. Talvez, eu não tenha sabido os termos certos para pesquisar. É o seguinte... estou tentando incluir, em uma lista array, índices com valores montados em uma variável a partir de outra array e não estou a conseguir. Atualmente, meu código é o seguinte...
      var ids = {     "joby": "track 01",     "dobby": "track 02",     "medz": "track 03",     "decks": "track 04,     "tecks": "track 05",     "assud": "track 06",     "mand": "track 07",     "daly": "track 08", }; var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      Até aqui ok. É o que tenho no momento. O que estou querendo fazer é colocar, no lugar das linhas de adb: 0 até dep: 0, outra array que criei com esses índices, porque pode ser que eu precise adicionar mais valores e eu quero fazer isso na array nova porque vou usar ela em vários lugares e eu teria que alterar em todos se não fizer essa modificação. Fazendo ela, eu alteraria apenas nela mesmo. Então, agora, com a array nova, seria algo assim:
      var ids = {     "joby": "track 01",     "dobby": "track 01",     "medz": "track 01",     "decks": "track 01",     "tecks": "track 01",     "assud": "track 01",     "mand": "track 01",     "daly": "track 01", }; var juds = ["adb", "mdc", "bah", "tek", "dep"]; //lista nova com os valores var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      O que eu preciso é incluir os valores de juds em lstIds. Da forma que está, não consigo fazer um for dentro do outro for para pegar esses dados e não consigo, também, criar ele fora e inserir com variável, tipo:
      var fJuds = ""; for(i in juds){     fJuds += juds[i] + ": 0,"; } for(i in ids){         lstIds[i] =  {         dock: ids[i],         fJuds // Aqui eu incluiria a variável no lugar das linhas...         tos: 0     }; }  
      Bem, o que eu queria saber mesmo é como eu poderia inserir uma variável no meio duma lista desse tipo... se é possível.
       
      Agradeço pela atenção...
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Millena Oliveira
      Oiii gente, boa noite. Estou estudando ainda e me deram um desafio para desenvolver um programa que imprimisse na tela somente os números primos segundo o valor que o usuário colocasse na execução. Utilizei o readLine para isso. Usei um objeto para que repetisse a execução e salvei todos os números numa array. O problema é, quando faço o teste colocando um número qualquer, retorna uma array vazia. Poderia me dar uma ajuda? Segue abaixo todo o código.
      Obrigada :)
       
      var readline = require("readline"); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function desafioPrimos() { var primos = []; rl.question("Digite um número: ", function (num) { console.log(primos); numero = parseInt(num); numerosPrimos: for (var x = 2; x <= num; x++) { for (var y = 2; y < x; y++) { if (x % y === 0) continue numerosPrimos; }; primos.push(x); rl.close(); }; }); }; desafioPrimos();  
    • Por lordzyrium
      Seguinte. Estou tendo dificuldades em criar um array a partir de outro array. E o que preciso é que a saída seja exatamente assim:
      $dados_out = array(     'nome' => 'Nome do Aluno',     'diciplina_notas' => array(         array('PORTUGUÊS', '7ano' => '7,5', '8ano' => '7,0', '9ano' => '8,0'),         array('REDAÇÃO', '7ano' => '8,5', '8ano' => '9,0', '9ano' => '9,0'),         array('HISTÓRIA', '7ano' => '9,5', '8ano' => '8,5', '9ano' => '8,5'),         array('GEOGRAFICA', '7ano' => '7,0', '8ano' => '8,5', '9ano' => '8,0'),         array('QUIMICA', '7ano' => '--', '8ano' => '--', '9ano' => '8,5'),     ) ); A partir deste código:
       
      $dados = array( array( 'nome'=> 'Nome do Aluno', 'etapa'=> '7º ANO', 'pos' => 7, 'not_dados'=> array( array('PORTUGUES', '7,5', '120H', 'AP'), array('REDAÇÃO', '8,5', '40H', 'AP'), array('HISTÓRIA', '9,0', '80H', 'AP'), array('GEOGRAFIA', '7,0', '80H', 'AP') ) ), array( 'nome'=> 'Nome do Aluno', 'etapa'=> '8º ANO', 'pos' => 8, 'not_dados'=> array( array('PORTUGUES', '7,0', '120H', 'AP'), array('HISTÓRIA', '8,5', '80H', 'AP'), array('REDAÇÃO', '9,0', '40H', 'AP'), array('GEOGRAFIA', '8,5', '80H', 'AP') ) ), array( 'nome'=> 'Nome do Aluno', 'etapa'=> '9º ANO', 'pos' => 9, 'not_dados'=> array( array('PORTUGUES', '8,0', '120H', 'AP'), array('HISTÓRIA', '8,5', '80H', 'AP'), array('REDAÇÃO', '9,0', '40H', 'AP'), array('GEOGRAFIA', '8,0', '80H', 'AP'), array('QUIMICA', '8,5', '80H', 'AP') ) ), );  
       
      OBS: terá todas as etapas e as diciplinas não podem ser repetidas.
      Quem puder ajudar desde já agradeço.
       
    • Por MCL_2007
      Boa dia Amigos...
      Tenho esses arrays:
      Array (
      [0] => 2535
      [1] => 2433
      )
      Array (
      [0] =>
      [1] => marcelo@gmail.com;m@terra.com.br
      [2] =>
      [3] => neusa@terra.com.br
      )
       
      Preciso do seguinte resultado de saida:
      2535 - marcelo@gmail.com;m@terra.com.br
      2433 -  neusa@terra.com.br
       
      Como faço , alguem pode me ajudar?
      Gratidao.
×

Informação importante

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