2

Is it possible to create a dynamic variable in PHP based on the value that comes from mysql database?

I mean,

say I have a field in mysql State

When I read the value in php using row['State'] from the database and if I get a value like Alabama, I want to have a variable created like $Alabama_count and I will initialize to 0 or 1.

Thanks.

Alix Axel
  • 151,645
  • 95
  • 393
  • 500
JPro
  • 6,292
  • 13
  • 57
  • 83

7 Answers7

3

There does exist an easier solution. Instead of creating something called $Alabama_count, you could create this very easily: $count['Alabama'], i.e. $count[$row['State']].

Aishwar
  • 9,284
  • 10
  • 59
  • 80
  • 1
    I've never thought of a good place to use variable variables where an associative array wouldn't be better. Though you do need to say: $count[$row['State']] (missing $ on row) – Johrn Jan 21 '10 at 15:54
  • @Johnr: yep, I agree. Thanks for the note. I have fixed it now. – Aishwar Jan 21 '10 at 15:58
1
$varname = $row['State'] . '_count';
$$varname = 0; // or 1
Aistina
  • 12,435
  • 13
  • 69
  • 89
1

You can do ${$row['State']} if $row['State'] is Alabama it's the same as doing $Alabama.

Similarly you can do the same to _count:

${$row['State'] . '_count'} = 0; // $Alabama_count = 0;
${$row['State'] . '_count'}++; // $Alabama_count++; // $Alabama_count = 1;
Alix Axel
  • 151,645
  • 95
  • 393
  • 500
0

Sounds like you want to use variable variables, something like this?

$var_name = "{$row['State']}_count";
$$var_name = 1;
OneNerd
  • 6,442
  • 17
  • 60
  • 78
0

You can use for this variables of variables using $ symbol twice: for example:

$variable = 'Some_text';
$$name = 123;
echo $Some_text;
//this will output 123
Javi
  • 19,387
  • 30
  • 102
  • 135
0

Not really sure if this is what you want but take a look at Variable variables on the php manual

AntonioCS
  • 8,335
  • 18
  • 63
  • 92
0

You could create a variable named ${$row['State'].'_count'} and set its value. I'm not sure how advisable this would be, however. You don't know what variables you will be left with.

Amish Programmer
  • 2,051
  • 3
  • 19
  • 22