vincent
vincent

Reputation: 2835

Declare variable variables using static string and counter variable in a loop

How do I create variable variables inside a for loop?

This is the loop:

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {

}

Inside this loop, I would like to create a variable $seat for each time it passes but it has to increment like so. first time it passes it should be $seat1 = $_POST['seat' + $aantalZitjesBestellen], next time it passes: $seat2 = $_POST['seat' + $aantalZitjesBestellen] and so on.

At the end, it should be:

$seat1 = $_POST['seat1'];
$seat2 = $_POST['seat2'];

and so on.

The variable and the content of the $_POST should be dynamic.

Upvotes: 0

Views: 467

Answers (5)

mathk
mathk

Reputation: 8143

You can use extract but I don't recommended to do what you are trying to do.

Upvotes: 0

jensgram
jensgram

Reputation: 31518

(Expanded for clarity - you may be able to do a one-liner)

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
    $varname = 'seat' . $counter;
    $$varname = $POST[$varname];
}

BUT! You really shouldn't do this. (And if you really must, see cletus' answer for the built-in PHP way to do it - this is considered bad practice too, though.)

Reconsider your problem and see if arrays might be the solution (I guess it will). This will make both inspection (via e.g. var_dump()) and iteration easier and does not pollute the global variable space.

Upvotes: 2

nubbel
nubbel

Reputation: 1582

This will work as well:

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
    ${'seat' . $counter} = $_POST['seat' . $counter];
}

Upvotes: 3

cletus
cletus

Reputation: 625457

Firstly, I would use an array for this unless I'm missing something. Having variables like $seat1, $seat2, etc tends to have far less utility and be far more cumbersome than using an array.

That being said, use this syntax:

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
  $key = 'seat' . $counter;
  $$key = $_POST[$key];
}

Lastly, PHP has an inbuilt function for extracting array keys into the symbol table: extract(). extract() has enormous potential security problems if you use it with unfiltered user input (eg $_POST) so use with caution.

Upvotes: 6

Lekensteyn
Lekensteyn

Reputation: 66515

for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) {
   $name = 'seat' . $counter;
   $$name = $_POST['seat' . $counter];
}

It's recommended to use arrays, as you can check them easier.

Upvotes: 0

Related Questions