Подтвердить что ты не робот

Как изменить имя переменной php в цикле?

Предположим, что у меня есть переменная с именем $file и цикл for: for($i=1; $i <= 5; $i++) {}

Для каждой итерации цикла for значение $i будет добавлено к имени переменной $file, поэтому после завершения цикла for у меня должно быть пять переменных: $file1, $file2, $file3, $file4 и $file5.

4b9b3361

Ответ 1

Используйте синтаксис ${'varname}}:

for($i=1; $i <= 5; $i++) {
    ${'file' . $i} = $i;
}

Однако вместо этого часто лучше использовать массивы.

Ответ 2

Там есть способ сделать это:

for($i = 1; $i <= 5; $i++) {
    ${'file'.$i} = ...;
}

Но это плохая идея. Почему это плохая идея? Потому что это то, для чего предназначены массивы. Сделайте это вместо:

for($i = 1; $i <= 5; $i++) {
    $file[$i] = ...;
}

(NB. Это обычное соглашение, чтобы запускать ключи массива в 0, а не 1, но вам не нужно это делать.)

Ответ 3

можно делать то, что вы хотите, но создание переменных "на лету" кажется необычным способом решения такой проблемы (я мог ошибаться)

Я бы предложил хранить имена файлов в массиве, таким образом вы можете легко перебирать файлы позже или добавить дополнительный файл и не изменять какие-либо имена жестко запрограммированных переменных

    $myfiles = array();

    for ($i=1; $i<=5; $i++) {
       $myfiles["file$i"] = "value set in loop";
    }

    //if you want to use the values later
    $file5_value = $myfiles["file5"];

    //if you want to loop through them all
    foreach ($myfiles as $key => $val) {
      echo "$key -> $val\n";
    }

Ответ 4

См. руководство по PHP на Переменные переменные.

$var_name = '';
for ($i = 0; $i < 5; $i++)
{
  $var_name = 'file' . $i;

  // reference $$var_name now.
  $$var_name = 'foo';
}

var_dump($file1);
var_dump($file2);
var_dump($file3);
var_dump($file4);
var_dump($file5);

демонстрация

Ответ 5

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

for($i=1; $i <= 5; $i++) {
    $file[$i] = $i;
}

Ответ 6

См. раздел Переменные переменные в руководстве по PHP. Вы можете использовать $$ для своих нужд следующим образом:

<?php
    $var_prefix = 'file';
    for($i=1; $i <= 5; $i++) {
        $var_name = $var_prefix . $i;
        $$var_name = 'Foo Bar Blah Baz ' . $i;
    }
    var_dump($file1, $file2, $file3, $file4, $file5);
?>