Jump to content


wellington09

Member Since 09/09/2008
Offline Last Active 13/04/2017, 15:23
-----

Posts I've Made

In Topic: Transformar array em outro array

20/11/2015, 11:02

ShZlot, fiquei batendo cabeça aqui e consegui resolver o meu problema com o seguinte código abaixo.

<?php
$campo_1 = 'nome';
$campo_2 = 'texto';
$contador = 0;
foreach($arrayDados as $k=>$v):// Array principal
    $qtd = count($v);
    foreach($arrayDados[$k] as $k2=>$v2):// Arrays dentro do array principal
        if($contador < $qtd):
            $array_chave[$campo_1] = $arrayDados[$campo_1][$contador]; // crio um novo array
            $array_chave[$campo_2] = $arrayDados[$campo_2][$contador]; // crio um novo array
           print_r($array_chave);// monta o array do jeito que eu quero
        endif;
       $contador++;
   endforeach;
endforeach;
?>

Fiz um laço na tag fieldset, apenas para simular um exemplo e brincar com o codigo: 

<form action="" method="post" target="_blank">
    <?php for($i = 0; $i < 3 ; $i++):?>
    <fieldset>
       <legend>Teste <?php echo $i;?></legend>
       <p>
         <label>Nome</label>
         <input name="tabelas[nome][]" type="text" />
       </p>
       <p>
         <label>Texto</label>
         <input name="tabelas[texto][]" type="text" />
       </p>
    </fieldset>
    <?php endfor;?>
    <input name="enviar" type="submit" value="enviar" />
</form>

Apesar do código estar funcionando e gerando o array do jeito que eu queria, eu ainda não fiquei satisfeito com o código que criei, pois caso eu tenha um novo campo dentro da tag fieldset ex:

      <p>
        <label>Link</label>
        <input name="tabelas[link][]" type="url" />
      </p>

Terei que acrescentar o seguinte código no PHP

$campo_3 = 'link';
$array_chave[$campo_3] = $arrayDados[$campo_3][$contador]; // crio um novo array

Se alguém puder me ajudar na logica acima, deixando ela mais dinâmica sem a necessidade de ficar acrescentando variáveis como campo_1campo_2campo_3campo_4, etc., eu fico grato.


IPB Skin By Virteq