Loop with "for" in a form with equal field sets

3

I have a data capture of a form where fields are 5 sets of equal fields. I want at the time of capturing for my array, I do not need to repeat:

array[1] = post1, array[2] = post2

I know you can use a for :

for ($i=1;$i<=5;$i++) {
    lista[$i][..........]=post[........$i]
}

My code looks like this:

$lista[1]['nome']=$_POST['nome1'];
$lista[1]['curso']=$_POST['curso1'];
$lista[1]['idade']=$_POST['idade1'];
$lista[1]['sexo']=$_POST['sexo1'];

$lista[2]['nome']=$_POST['nome2'];
$lista[2]['curso']=$_POST['curso2'];
$lista[2]['idade']=$_POST['idade2'];
$lista[2]['sexo']=$_POST['sexo2'];

$lista[3]['nome']=$_POST['nome3'];
$lista[3]['curso']=$_POST['curso3'];
$lista[3]['idade']=$_POST['idade3'];
$lista[3]['sexo']=$_POST['sexo3'];

$lista[4]['nome']=$_POST['nome4'];
$lista[4]['curso']=$_POST['curso4'];
$lista[4]['idade']=$_POST['idade4'];
$lista[4]['sexo']=$_POST['sexo4'];

$lista[5]['nome']=$_POST['nome5'];
$lista[5]['curso']=$_POST['curso5'];
$lista[5]['idade']=$_POST['idade5'];
$lista[5]['sexo']=$_POST['sexo5'];

I think I need to use a concatenation in the name of the post, I'm putting the wrong syntax here, how does that work?

    
asked by anonymous 20.09.2014 / 01:24

2 answers

7
$campos = array( 'nome', 'curso', 'idade', 'sexo' );
$lista = array();

for( $i = 1; $i <= 5; $i++ ) {
   foreach ( $campos as $campo ) {
      $lista[$i][$campo] = $_POST[$campo.$i];
   }
}
    
20.09.2014 / 02:22
5

To transform this code into a single pass the index $i at the time of assigning the values as below:

$lista = array();
for($i=1; $i<=5; $i++){
   $lista[$i]['nome'] = $_POST['nome'.$i];
   $lista[$i]['curso']=$_POST['curso'.$i];
   $lista[$i]['idade']=$_POST['idade'.$i];
   $lista[$i]['sexo']=$_POST['sexo'.$i];
}
    
20.09.2014 / 01:51