Ir para conteúdo

POWERED BY:

Arquivado

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

muriloventuroso

Array multidimensional com loop

Recommended Posts

Olá,

 

Preciso fazer um sistema que leia 10 nomes para cada grupo e salve isso em uma array multidimensional. Mas esse array tem que ficar dentro de um loop, caso eu precise aumentar o numero de grupos.

 

Alguem pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lição de casa? Poste o que você tem, o que tentou (se é que tentou) e vamos daí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por enquanto tá assim, só q não tá em matriz.... q é o q preciso, rs

<?php
error_reporting(0);

$vet=array();
$vet2=array();

foreach($_POST as $a => $i)
{
	
	$cont++;
	if ($cont<=5) {
	$vet[$cont]=$i;
	}
	
	else {
	$vet2[$cont]=$i;
	}
}

for($m=1;$m<=10;$m++) {
echo "$vet[$m]<br>";
}
for($m=1;$m<=10;$m++) {
echo "$vet2[$m]<br>";
}



?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que está em matriz.

 

Em PHP a partir do momento que você adereça uma variável com colchetes elas se transforma numa matriz.

 

Acho melhor explicar melhor o seu problema. As vezes você acha que precisa desse monte de coisa e não precisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou repetir: Explique seu PROBLEMA, não o que você acha que vai resolver o problema, afinal, se você soubesse a solução, já teria resolvido, certo?

 

Por exemplo: Qual a estrutura do formulário? Que dados o programa está recebendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem, sem barro para fazer os tijolos vamos ver... Você recebe o array (óbvio), ordena-o e depois o quebra em dois arrays de 5 índices cada.

 

Se porventura você não tiver exatos 10 entradas, o segundo array terá menos entradas que o primeiro, nesse caso você impede que isso ocorra, através de um teste lógico que leve em consideração o módulo ( % ) 2.

 

Ainda é possível quebrar o array em dois grupos com menos de 5 entradas cada caso sejam informados 8, 6, 4 ou 2 nomes. Mas isso são outros quinhentos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente! :D

 

Pode considerar que os grupos tenham 5 entradas cada... Dá uma força aí pra montar isso, rs

 

Usando loop pra receber os dados do POST só com foreach, correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda é possível quebrar o array em dois grupos com menos de 5 entradas cada caso sejam informados 8, 6, 4 ou 2 nomes. Mas isso são outros quinhentos.

 

Completando 1.000 então:

$arr = range(1, rand(2,20));
list($grupoA, $grupoB) = array_chunk($arr, ((count($arr) / 2) + (count($arr) % 2)));
var_dump($grupoA, $grupoB);

Obviamente que, se o número for impar, o segundo grupo ficará com um a menos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obviamente que, se o número for impar, o segundo grupo ficará com um a menos...

 

O que ainda assim pode ser corrigido com um array_fill() com argumentos dinâmicos, muito embora, como isso me parece mais um daqueles jogos de futebol sem noção (minha opinião), não haveria lógica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem minha burrice... A forma que eu vou receber os dados do formulário continua a mesma?

foreach($_POST as $a => $i)
{
	
	$cont++;
	$vet[$cont]=$i;

}


Fiz um teste aqui. Coloquei o código dessa forma:

<?php
error_reporting(0);



foreach($_POST as $a => $i)
{
	
	$cont++;
	$vet[$cont]=$i;

}

$arr = range(1,10);
       echo('<pre>');
       print_r(array_chunk($vet,5));
?>

Até que funcionou, mas vejam como exibiu:

 

Array(    [0] => Array        (            [0] => Fulano            [1] => Ciclano            [2] => Beltrano            [3] => Nome 1            [4] => Nome 2        )    [1] => Array        (            [0] => Nome 3            [1] => Nome 4            [2] => Nome 5            [3] => Nome 6            [4] => Nome 7        ))

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.