在我的上一篇文章中,我问: 如何在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'
}
现在,如果我需要变量值而不是当前变量?
答案 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)};
是不够的?