2011-04-25 6 views
1

저는 PHP와 프로그래밍에 대해 처음으로 익숙합니다 ... 내가 만든 페이지에서 foreach 루프를 사용하여 일부 옵션을 설정하려고합니다. 그것은 변수를 동적으로 할당하려고하는 마지막 섹션을 제외하고 모두 작동하므로 루프 외부에서 사용할 수 있습니다.PHP의 다중 변수 변수

<?PHP 

$array=array(foo, bar, baz); 

foreach ($array as $option) { 

    // I have if statements to determine what $option_req 
    // and $option_status end up being, they work correctly. 

    $option_req="Hello"; 
    $option_status="World"; 

    $rh='Req_'; 
    $sh='Status_'; 

    $$rh.$$option=$option_req; 
    $$sh.$$option=$option_status; 

    } 

echo "<br>R_Foo: ".$Req_foo; 
echo "<br>S_Foo: ".$Status_foo; 
echo "<br>R_Bar: ".$Req_bar; 
echo "<br>S_Bar: ".$Status_bar; 
echo "<br>R_Baz: ".$Req_baz; 
echo "<br>S_Baz: ".$Status_baz; 

?> 

루프가 완료되면 이제 다음과 같은 6 가지 변수를 사용해야합니까?

$Req_foo 
$Status_foo 

$Req_bar 
$Status_bar 

$Req_baz 
$Status_baz 

나는 이것으로 조금 놀았지만, Google에서의 검색은 오늘 효과가없는 것처럼 보입니다.

+8

거룩한, 이런 식으로하지 마십시오. –

+2

아마 전체 코드를 추가하면 더 이해할 수 있습니다. 정확히 무엇을하려고합니까? – g19fanatic

답변

1

PHP가 할당을 시도 할 때 연결이 마음에 들지 않는 것처럼 보입니다. 다음과 같이 사전에 시도하십시오.

<?php 

$array = array('foo', 'bar', 'baz'); 

foreach ($array as $option) 
{ 
    $option_req="Hello"; 
    $option_status="World"; 

    $rh = 'Req_'; 
    $sh = 'Status_'; 

    $r_opt = $rh.$option; 
    $s_opt = $sh.$option; 

    $$r_opt = $option_req; 
    $$s_opt = $option_status; 
} 

echo "<br>R_Foo: ".$Req_foo; 
echo "<br>S_Foo: ".$Status_foo; 
echo "<br>R_Bar: ".$Req_bar; 
echo "<br>S_Bar: ".$Status_bar; 
echo "<br>R_Baz: ".$Req_baz; 
echo "<br>S_Baz: ".$Status_baz; 

다른 의견 제시 자의 제안처럼 위대한 관행은 아닙니다. 변수로 네임 스페이스를 어지럽히는 것보다는 배열에 데이터를 저장해보십시오.

+1

도움을 주셔서 감사합니다! 예제가 작동합니다 ...이 예제를 본 후에 "가변 변수"가 나를 위해 클릭되었습니다. 위와 배열 예제를 통해이 작업을 수행하는 방법에 대한 더 나은 아이디어를 얻을 수있었습니다. – Colin

3

일부 배열 항목에 액세스하려면 일부 배열 항목에 액세스하십시오.
루프가 필요하지 않습니다.

$req = array("foo" => 1, 
      "bar" => 2, 
      "baz" => 3, 
      ); 
echo $req['foo']; 

평범하고 단순

+1

감사. 나는 항상 기본 숫자 [0], [1] 등을 사용하는 배열을 할당했습니다. 배열 요소 이름을 지정하면 훨씬 쉽게 참조 할 수 있습니다! – Colin

0

변수 변수는 그런 식으로 작동하지 않습니다. 문자열을 포함하는 하나의 변수가 있어야합니다. 내가 변수 변수를 사용하지 않는 것이 좋습니다

$array=array('foo', 'bar', 'baz'); 

,하지만 당신이 원한다면,이 방법으로 할 수 있습니다 :

$opt_r = $rh.$option; 
$$opt_r = $option_req; 

$opt_s = $sh.$option; 
$$opt_s = $option_status; 

또한, 귀하의 문자열을 인용해야합니다.

1

당신은 할 (당신은 안하지만!) 수 : 모든 것을 들어

${$rh.$option} = ...