PHP сделать переменную с переменной - PullRequest
2 голосов
/ 04 мая 2011

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

$var1=...
$var2=...
$var3=...

теперь внутри счетчика я бы хотел, чтобы число после переменной увеличивалось с переменной счетчика ...

так как

for ( $counter = 1; $counter <= 3; $counter += 1) {
  $var=$var$counter;
}

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

Ответы [ 5 ]

2 голосов
/ 04 мая 2011

Это называется переменная переменная .Каждый раз, когда вы думаете об использовании одного, поймите, что вы должны использовать вместо него массив.

1 голос
/ 04 мая 2011

Что вы пытаетесь сделать с этим?

Я спрашиваю, потому что похоже, что вам было бы лучше использовать массив для достижения того, чего вы хотите.Тогда вы могли бы сделать что-то вроде:

for ( $counter = 1; $counter <= 3; $counter += 1) {
  $var[$counter] = $value;
}
1 голос
/ 04 мая 2011

Не уверен, что вы подразумеваете под строкой, но это должно сделать это.

for ( $counter = 1; $counter <= 3; $counter += 1) {
   $varName = 'var' . $counter;
   $var=$$varName;
}

Но я согласен, что вместо этого следует использовать другой метод (массив).

0 голосов
/ 04 мая 2011

Вы хотите изменить этот код на:

for ( $counter = 1; $counter <= 3; $counter += 1) {
  ${"var".$counter} = $var;
}

Заключение строки в фигурные скобки позволяет использовать ее для динамического создания имени переменной, поэтому мы просто объединяем «var» со значением счетчика, а затем используем его в качестве нового имени переменной.

Однако, обратите внимание, что при этом будут созданы и инициализированы все переменные на этом пути ... Так что в этом примере вы получите $ var, $ var1 и $ var2, равные одному значению. Если это не то, что вам нужно, вам придется отменить () все переменные, которые вам не нужны.

Также обратите внимание, что в большинстве случаев это не «лучшая практика». Могу я спросить, зачем тебе это нужно? Возможно, массив будет более подходящим ..

0 голосов
/ 04 мая 2011

Вы можете сделать это, но это не рекомендуется .

Это выглядит так:

for ( $counter = 1; $counter <= 3; $counter += 1) {
    $var = ${'var' . $counter};
}
...