【问题标题】:How to get the previous value from incrementing variable in for loop?如何从for循环中的递增变量中获取先前的值?
【发布时间】:2010-04-28 09:05:51
【问题描述】:

在我的上一篇文章中,我问: 如何在 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'
}

现在,如果我需要当前变量之前的变量值怎么办?

【问题讨论】:

  • ${'track_' . ($i-1)}; 还不够吗?
  • 如果你可以在我的回答栏中粘贴这个回复我想接受它,它对我有用....

标签: php for-loop


【解决方案1】:
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);

【讨论】:

    【解决方案3】:

    我知道其他人说只是减 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;
    }
    

    【讨论】:

      【解决方案4】:
      if ($i != 0)
      {
        $prev = ${'track_' . ($i-1)} ;
      }
      

      ?

      【讨论】:

        【解决方案5】:

        ${'track_' . ($i-1)}; 还不够吗?

        【讨论】:

        • 将在第一个周期生成通知,因为${'track_-1'}; 不存在。
        猜你喜欢
        • 2011-10-15
        • 2017-01-26
        • 2022-09-25
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 1970-01-01
        相关资源
        最近更新 更多