user982853
user982853

Reputation: 2488

PHP Loop Dynamic Variable

I am trying to create a dynamic variable. I have a loop and I want it to loop through the records and create a variable for each record. My code:

$ct = 1;
foreach ($record as $rec){
  $var.$ct = $rec['Name'];
  $ct = $ct + 1;
}

echo $var1;

When I try to use the above code, it gives me an error saying the $var1 variable doesn't exist/undefined? Is it possible in PHP to create dynamic variables like the above example. If so, what am I doing wrong?

Upvotes: 3

Views: 3077

Answers (5)

Robert
Robert

Reputation: 20286

You can use different syntax with {}

$ct = 1;

foreach ($record as $rec){
    ${'var' . $ct++} = $rec['Name'];
}

echo $var1;

Although isn't it better just to use an array?

Working fiddle

Upvotes: 2

Mithu A Quayium
Mithu A Quayium

Reputation: 739

You can do that using array easily. But if you really want it to be in dyanamic vairable individually, in that case also , I would like to suggest you to get help in array way. This way, you can track you variables.

In the below mentioned way, you event don't need to take a extra variable like $ct. Just an array $var and applying extract method on it after the loop will do the trick.

$var = [];

foreach( $record as $k => $rec )
{
 $var['var'.$k] = $rec['Name'];

}

extract($var);

echo $var0; //or $var_1 or $var_2

Upvotes: 0

Umer Abbas
Umer Abbas

Reputation: 1876

Please try this, let me know if it works for you. I use a prefix with the dynamic variable.

$ct = 1;
$prefix = 'var';
foreach ($record as $key=>$rec){
  $temp = $ct;
  $ct = $prefix.$ct;
  $$ct = $rec;
  $ct = $temp + 1;
}

echo $var1;

Upvotes: 0

Rentabear
Rentabear

Reputation: 300

You can with a double $.

    $var = "variable";
    $$var = "test";

    echo $variable;
    //echoes "test"

in your example:

$ct = 1;
foreach ($record as $rec){
$varname = "var" . $ct;
  $$varname = $rec['Name'];
  $ct = $ct + 1;
}

echo $var1;

Upvotes: 0

BenM
BenM

Reputation: 53246

You're looking for variable variables.

Create the variable name as a string, and then assign it:

$ct = 1;
foreach( $record as $rec )
{
  $name = 'var'.$ct;
  $$name = $rec['Name'];
  $ct++;
}

echo $var1;

It would be much better to create an array, though:

$names = [ ];

foreach( $record as $rec )
{
  $names[] = $rec['Name'];
}

echo $names[0];

Upvotes: 3

Related Questions