如何从for循环中递增变量中获取先前的值?

时间:2010-04-28 09:05:51

标签: php for-loop

在我的上一篇文章中,我问: 如何在php中使用“for”循环创建动态递增变量?像明智的一样:$ track_1,$ track_2,$ track_3,$ track_4 .....等......

我选择的答案是

for($i = 0; $i < 10; $i++) {
  $name = "track_$i";
  $$name = 'hello';
}

for($i = 0; $i < 10; $i++) {
    ${'track_' . $i} = 'val'
}

现在,如果我需要变量值而不是当前变量?

5 个答案:

答案 0 :(得分:7)

for($i = 0; $i < 10; $i++) {
    ${'track_' . $i} = 'val'
    if($i != 0){
        $prev_val = ${'track_' . ($i - 1)}
    }
}

但是为这个应用程序使用数组会更好。

$tracks = array();
for($i = 0; $i < 10; $i++){
    $tracks[$i] = 'val';
    if($i != 0){
        $prev_val = $tracks[$i-1];
    }
}

答案 1 :(得分:2)

我想简单的方法就是使用两个变量。

$name2 = "track_0";
for($i = 1; $i < 10; $i++) {
  $name1 = $name2;
  $name2 = "track_$i";
  $$name1 = 'hello_previous';
  $$name2 = 'hello_this';
}

或者,如果您明确使用i = [0 ... 10]生成变量名称,则只需编写$name2 = "track_". $i; $name1 = "track_" . ($i - 1);

答案 2 :(得分:2)

我知道其他人正在说减1,但是如果你的名单分别为1,2,4,5,8,9怎么办? 8的前一个不是7,而是5,下面的方法(根据需要进行一些修改)将提供一种获取真实先前值的方法,而不是猜测的方法。

for($i = 0; $i < 10; $i++) {
    ${'track_' . $i} = 'val'
    if(!empty($last_val))
         // do what you want here

    // set a var to store the last value
    $last_val=$i;
}

答案 3 :(得分:1)

if ($i != 0)
{
  $prev = ${'track_' . ($i-1)} ;
}

答案 4 :(得分:1)

${'track_' . ($i-1)};是不够的?