Динамическая переменная цикла Loop - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь создать динамическую переменную.У меня есть цикл, и я хочу, чтобы он просматривал записи и создавал переменные для каждой записи.Мой код:

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

echo $var1;

Когда я пытаюсь использовать приведенный выше код, выдает ошибку, в которой говорится, что переменная $var1 не существует / не определена?Возможно ли в PHP создать динамические переменные, как в примере выше.Если так, что я делаю не так?

Ответы [ 5 ]

2 голосов
/ 24 сентября 2019

Вы ищете переменные .

Создайте имя переменной в виде строки, а затем присвойте ей:

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

echo $var1;

Было бы намного лучшечтобы создать массив, хотя:

$names = [ ];

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

echo $names[0];
1 голос
/ 24 сентября 2019

Вы можете использовать другой синтаксис с {}

$ct = 1;

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

echo $var1;

Хотя не лучше ли просто использовать массив?

Рабочая скрипка

0 голосов
/ 24 сентября 2019

Вы можете сделать это легко используя массив.Но если вы действительно хотите, чтобы он был в dyanamic vairable индивидуально, в этом случае также, я хотел бы предложить вам получить помощь множеством способов.Таким образом, вы можете отслеживать переменные.

В указанном ниже способе вам не нужно принимать дополнительную переменную, например $ ct.Просто массив $ var и применение к нему метода извлечения после цикла сделают свое дело.

$var = [];

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

}

extract($var);

echo $var0; //or $var_1 or $var_2
0 голосов
/ 24 сентября 2019

Пожалуйста, попробуйте это, дайте мне знать, если это работает для вас.Я использую префикс с динамической переменной.

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

echo $var1;
0 голосов
/ 24 сентября 2019

Вы можете с двойным $.

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

    echo $variable;
    //echoes "test"

в вашем примере:

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

echo $var1;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...