2014-06-09 2 views
0

변수를 동적으로 변수를 만드는 데 문제가 있습니다.

양식에는 사람들이 드라이버 정보를 입력하는 테이블이 있습니다. 표에는 원래 하나의 행이 있지만 더 많은 행을 추가해야하는 경우 사용자가 버튼을 누르고 새 행이 추가되며 새 행의 입력란 이름이 증가합니다 (예 : driver1, driver2, driver3, driver4). 내가 얻으려고

이 내 PHP 스크립트와 일치합니다 :

$count=1; 

while($count<=100) { 
    $driver . string($count) = $_POST['driver . string($count)']; 
    $count++; 
} 

는 일반적으로 I 각 $_POST 변수에 새로운 변수를 만들 것이지만, 거기에 100 행까지되는 경우, 나는 이것을 루프로 처리하고 싶다.

I 받고있어 오류 :

Fatal error: Can't use function return value in write context in C:\Inetpub\vhosts\host\httpdocs\process.php on line 11 
+0

을 개선하는 데 도움이 될 수 있습니다 생각합니다. string ($ count) = $ _POST [ '드라이버. string ($ count) '];'? 연결 중간에'= $ _POST ... '할당이 있습니다. –

+1

오, 알았어. [가변 변수] (http://us3.php.net//manual/en/language.variables.variable.php)를 빌드하려고합니다. 배열로 유지하는 것이 왜 좋은가요? 그들은 결국, 관련이 있습니다. 데이터 구조 내에서 더 잘 구성됩니다. –

+0

@MichaelBerkowski - 나는 많은'isset' 호출을 기대한다 ... –

답변

0

프로그래밍 방식으로 변수를 생성하는 reccomended하지 않습니다. 그러나 가능 :

${'driver'.$count} : 동적 변수에 대한 here

$count=1; 

while($count<=100) { 
    ${'driver'.$count} = $_POST['driver' . $count]; 
    $count++; 
} 

더.


그래도 난이 공범하는 배열을 사용

: 동일한 이름의 변수에 각 $_POST 키를 매핑 할 extract을 사용할 수 있습니다

$driver[$count]=$_POST['driver'.$count]; 

는 그런 다음

foreach ($driver as $count => $postValue){ 
    // $handling here 
} 

// OR to access a specific driver 
$driver[$count]; 
+1

나는 OP가'$ _POST [ 'driver'를 의미한다고 확신한다. string ($ count)]'실제로'driver라고하는 게시 필드가 없다면. 문자열 (42)'. –

+0

하하, 고마워, 내가 고쳐 줬어 :) –

0

을 수행 할 수 있습니다 .

extract($_POST,EXTR_OVERWRITE,'prefix'); 

이렇게하면 $ prefix_driver1, $ prefix_driver2 ... 등의 변수가 생성됩니다.

(접두사의 사용은 선택 사항이지만, 당신이 그것을 사용하지 않는 경우, 악의적 인 사용자가 단지 형태의 입력 이름을 변경하면 스크립트 변수를 조작 할 수 있습니다)이

<?php 

$count=1; 

while($count<=100) { 
    ${'driver' . $count} = $_POST['driver' . $count]; 
    $count++; 
} 

?> 

이후 시도

관련 문제