2010-08-24 3 views
0

for 루프 내에서 변수 변수를 만드는 방법은 무엇입니까? 변수 변수

는 루프 :

for ($counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { 

} 

내가 그것을 통과 때마다 변수 $ 좌석을 만들려는이 루프 내부하지만 그렇게 incrementlike한다. 처음으로 통과하면 $seat1 = $_POST['seat'+$aantalZitjesBestellen]이어야하며, 다음 번에 통과합니다 : $seat2 = $_POST['seat'+$aantalZitjesBestellen] 등등.

그래서 말은해야한다 : 등등

$seat1 = $_POST['seat1']; 
$seat2 = $_POST['seat2']; 

하고 있습니다.

그래서 $ _POST의 변수와 내용은 동적이어야합니다.

+9

왜 배열을 만들지 않습니까? – kennytm

+0

@KennyTM 좋은 지적! – jensgram

+0

$ _POST 변수의 값을 변경해야합니다. 표시중인 양식의 값을 업데이트하려고하기 때문에이 작업을 수행하고 있습니까? 이 경우 자바 스크립트를 사용하는 것이 좋습니다. – PhoebeB

답변

6

먼저 뭔가를 놓치지 않으면 배열을 사용합니다. $seat1, $seat2 등의 변수를 사용하면 훨씬 적은 유틸리티를 사용하고 배열을 사용하는 것보다 훨씬 성가 시게됩니다.

상기 그게되고

는이 구문을 사용

for ($counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { 
    $key = 'seat' . $counter; 
    $$key = $_POST[$key]; 
} 

마지막을 PHP 심볼 테이블에 배열 키를 추출하는 기능을 갖는다 붙박이 : extract(). extract()에는 필터링되지 않은 사용자 입력 (예 : $_POST)과 함께 사용할 경우 잠재적 인 보안 문제가 발생할 수 있으므로주의해서 사용해야합니다.

+1

그리고 응용 프로그램의 보안 구멍을 열 수 있기 때문에 extract()를 사용하는 것이 매우 어렵다. – Lekensteyn

2

은 (명확성을 위해 확장 - 당신은 한 라이너를 할 수 있습니다)

for ($counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { 
    $varname = 'seat' . $counter; 
    $$varname = $POST[$varname]; 
} 

하지만! 당신은 정말로 이것을해서는 안됩니다. (실제로해야한다면, 내장 된 PHP 방법을 위해서 cletus' answer을 보아라. 이것은 나쁜 연습이라 생각된다.)

배열을 해결할 수 있는지 다시 한번 생각해 보라.). 이는 검사 (예 : var_dump()) 및 반복 모두를 더 쉽게 만들며 전역 변수 공간을 오염시키지 않습니다.

+1

이것은 아주 나쁜 습관입니다 ... 배열이 훨씬 건강해질 것입니다. –

+1

@Pekka 동의합니다 (그러나 OP의 질문에 답합니다). 나는 내 대답에 대해 자세히 설명 할 것이다 :) – jensgram

0
for ($counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { 
    $name = 'seat' . $counter; 
    $$name = $_POST['seat' . $counter]; 
} 

쉽게 확인할 수 있으므로 배열을 사용하는 것이 좋습니다.

3

이 잘 작동합니다 :

for ($counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { 
    ${'seat' . $counter} = $_POST['seat' . $counter]; 
} 
+0

필자는이 구문을 선호합니다 (일반적으로 로컬 변수가 아닌 속성에 사용하지만). – strager

0

당신은 extract를 사용할 수 있지만 난 당신이 뭘 하려는지 할 것을 권장하지 않습니다.