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

Asked

Viewed 300 times

3

I have a data capture of a form where are fields 5 sets of equal fields. I want that 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 one for:

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

My code is 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 believe I need to use a concatenation in the name of the post, I’m putting the wrong syntax here, how does it look?

  • I don’t understand what you want...

  • 2

    What is exploid?

  • 1

    I think it’s ($dynamite)

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];
   }
}
  • good your code too, that’s right

5

To turn this code into a single pass $i when assigning 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];
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.