2010-04-28 3 views
0

내 마지막 게시물에서 나는 물었다 : PHP에서 "for"루프를 사용하여 동적 증가 변수를 만드는 방법? 같은 현명한 : $ track_1, $ track_2, $ track_3, $ track_4 ..... 등등 .... 그 대답은 내가 지금for 루프에서 변수를 증분하는 이전 값을 얻는 방법은 무엇입니까?

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

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

로 선정

, 현재 변수보다 이전 변수의 값이 필요한 경우 어떻게합니까?

+2

'$ { 'track_'. ($ i-1)};'충분하지 않을까요? – Matt

+2

U가이 답장을 붙여 넣을 수 있다면 내 대답 열에 받아 드리고 싶습니다. 저에게 도움이 되었어요 .... –

+0

완료 :) ........ – Matt

답변

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]; 
    } 
} 
+0

+1은 배열을 지적합니다. 이와 같이 사용되는 변수 변수는 대개 잘못된 설계의 표시입니다. – deceze

+0

+1, 모든 솔루션 중에서 가장 좋은 것 –

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

?

2

나는 simples 방법이 두 변수를 사용하는 것 같아요. 명시 적으로 내가 = [0 ... 10] 변수 이름을 생성하는 데 사용하는 경우

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

또는, 당신은 단순히 $name2 = "track_". $i; $name1 = "track_" . ($i - 1);

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; 
} 
+0

Grt Point .. 감사합니다 –

1

${'track_' . ($i-1)};으로 충분하지 않습니까?

+0

'$ { 'track_-1'};가 존재하지 않기 때문에 첫번째 사이클에서 통지를 생성합니다. –

+0

그래서 if 문으로 마무리하십시오. – Matt

관련 문제