Ir para conteúdo

POWERED BY:

Arquivado

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

Wellington09

Transformar array em outro array

Recommended Posts

Alguém poderia me dar uma força em uma lógica ?

Estou com dificuldade de transformar o seguinte array

<?php
Array
(
[nome] => Array
(
[0] => João
[1] => Maria
[2] => Pedrinho
[3] => Zezinho
)

[texto] => Array
(
[0] => A
[1] => B
[2] => C
[3] => D
)

)
?>

Neste array aqui

<?php
Array
(
[nome] => João
[texto] => A
)

Array
(
[nome] => Maria
[texto] => B
)

Array
(
[nome] => Pedrinho
[texto] => C
)

Array
(
[nome] => Zezinho
[texto] => D
)
?>

Abaixo segue minha tentativa

$contador = count($array);
$cont = 0;
$novo = array();

	foreach($array as $k1=>$v):
		$cont++;
		foreach($array[$k1] as $k2=>$v2):
			if($cont <= $contador):
				$novo[$k1] = $v2;
			endif;
		endforeach;
	endforeach;

print_r($novo);

RESULTADO FINAL

Array
(
    [nome] => Zezinho
    [texto] => D
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, 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]; //novo array
            $array_chave[$campo_2] = $arrayDados[$campo_2][$contador]; //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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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