php для имен переменных цикла

я получил код 100-200 правил для составления таблицы. но все время происходит одно и то же. у меня есть переменная $xm3, затем я делаю столбец. в следующей строке я получил $xm2 и сделал столбец. в следующей строке я получил $xm1 и сделал столбец.

поэтому мои переменные будут $xm3, $xm2, $xm1, $xm0, $xp1, $xp2, $xp3.

есть ли способ сделать цикл for, чтобы я мог заполнить $xm и после этого значение из цикла for?


person Stefan    schedule 27.05.2010    source источник
comment
Не могли бы вы опубликовать свой код, чтобы мы могли лучше понять, чего вы пытаетесь достичь. Спасибо.   -  person Neil Aitken    schedule 27.05.2010
comment
Массив, к которому вы можете получить доступ, как $x['m'][2], звучит более разумно.   -  person VolkerK    schedule 27.05.2010


Ответы (5)


В такой структуре вам лучше использовать массив для таких значений, но если вы хотите создать цикл для их прохождения:

for($i = 0; $i <= 3; $i++) {
    $var = 'xm' . $i
    $$var; //make column stuff, first time this will be xm0, then xm1, etc.

}
person GSto    schedule 27.05.2010

Не совсем понятно, что вы спрашиваете, но вы можете сделать

$xm = 'xm3';
$$xm // same as $xm3

в PHP, поэтому вы можете перебирать переменные с похожими именами. (Что не означает, что вы должны это делать. Использование массива обычно является лучшей альтернативой.)

person Tgr    schedule 27.05.2010

Насколько мне известно, использование разных имен переменных невозможно.

Однако, если вы используете массивы, как показано ниже

$xm[3] = "";
$xm[2] = "";
$xm[1] = "";
$xm[0] = "";

или просто $xm[] = "";

Затем вы можете использовать для каждого цикла:

foreach($xm as $v) { echo $v; }

Изменить: просто погуглил, и это возможно с использованием имен переменных, но считается плохой практикой. Изучайте и используйте массивы!

person Pez Cuckow    schedule 27.05.2010
comment
Переменные-переменные (как они известны) имеют некоторое применение. но я согласен с тем, что их использование для эмуляции поведения, подобного массиву, не является одним из них. - person Neil Aitken; 27.05.2010
comment
Когда вы хотели бы их использовать? Просто из интереса? - person Pez Cuckow; 27.05.2010

Вы можете сделать это, используя переменные переменные, но обычно вам лучше делать такие вещи в массиве.

Если вы уверены, вы хотите сделать это таким образом, и если «y» является значением вашего счетчика в цикле for:

${'xm' . $y} = $someValue;
person AvatarKava    schedule 27.05.2010
comment
Я не думаю, что вы можете использовать переменные переменные каким-либо другим способом, кроме $$var. - person Tgr; 27.05.2010
comment
Это более прямо отвечает на вопрос, но как разработчик я настоятельно рекомендую вам выбрать метод массива, предложенный другими. - person AvatarKava; 27.05.2010
comment
@Tgr - обновленный синтаксис, который я опубликовал, должен работать, но это не очень хорошая идея :) - person AvatarKava; 27.05.2010

Вы можете легко сделать что-то вроде этого:

$base_variable = 'xm';

а затем вы можете сделать цикл, создавая на лету переменные; Например:

for ($i=0; $i<10; $i++)
{
  $def_variable = $base_variable . $i;
  $$def_variable = 'value'; //this is equivalent to $xm0 = 'value'
}
person Giovanni Di Milia    schedule 27.05.2010