2012-06-26 7 views
1

저는 PHP 루프를 처음 접했고 배우기가 쉬워요. 그러나 PHP 루프를위한 새로운 변수를 만들려고 할 때 약간의 어려움을 겪었습니다.Variable in Variable (?) - PHP 루프

배경 :

$q1W = 5; 
$q2W = 10; 
$q3W = 2; 
이어서

I의 $_GET (q1, q2, q3) 변수를 잡고 자신의 값을 변수로 넣어 :

foreach($_GET as $qinput => $value) { 
    $$qinput = $value ; 
} 

은 I와 같은 21 개 변수 선언

이제 코드를 돌려 드리겠습니다.

나는 무엇을 놓치고

<?php for ($i=1; $i<=21; $i++) { 
$q.$i.final = $q.$i * $q.$i.W 
} 

: 루프 속으로 16,

$q1final = $q1 * $q1W; 
$q2final = $q2 * $q2W; 
$q3final = $q3 * $q3W; 

그래서 나는 21에있는 모든 방법이 내가 지금까지 무엇을 가지고 있음을 입력 할 필요가 없습니다?

+0

동적 변수를 일반 (마침표)과 같은 방법으로 연결할 수 없습니다. 또한 일반적으로 동적 변수를 사용해야하는 경우 잘못된 결과가 발생합니다. –

+1

@AlexLunix 문자열을 연결하여 동적 변수 이름을 만들 수 있습니다 (아래 답변에 대한 내 의견 참조). "동적 변수 이름"이 정답이면 틀린 질문을하는 것이 좋습니다. – DaveRandom

답변

5

많은 변수 대신 배열을 사용하는 것이 좋습니다. 그것은 당신의 데이터를보다 직접적으로 연관시킵니다. 예 :

$mults = array(
    'q1W' => 5, 
    'q2W' => 10, 
    'q3W' => 2 
); 
$final = array(); 
foreach ($_GET as $qinput => $value) { 
    $final[$qinput] = $mults[$qinput] * $value; 
} 
print_r($final); 
+2

정답입니다 (+1). OP/향후 방문자를 언급 할 때 위의 카운터를 사용하여 변수 이름을 정의하는 올바른 구문은 중괄호 안에있는 문자열을 사용하는 것입니다. $ { 'q'. $ i} * $ { 'q'. $ i.'W '}}'$ {'q ' – DaveRandom