2014-04-17 3 views
0

나는 10 개의 이름을 가질 수있는 폼에서 사용하고있는 성을 먼저 구분하는 코드를 가지고 있습니다. 지금은 코드를 여러 번 복제하고 숫자를 수동으로 업데이트했지만이 함수를 반복 할 수있는 방법이 있어야한다고 생각했습니다.PHP에서 다중 변수 증가하기 For 루프

기본 코드는 다음 FNAME 및 LNAME 변수로

if (!empty($_POST['name2'])) { 
    $name2 = ucwords(strtolower($_POST['name2'])); 
    $parser = new HumanNameParser_Parser($name2); 
    $fname2 = $parser->getFirst(); 
    $lname2 = $parser->getLast(); 
} 

다른 곳에서 사용되는 나는 이름을 고수 할 필요가있다.

은 내가 사용하는 생각을했다 :

for ($i=2; $i <= 6; $i++) 
{ 
    if (!empty($_POST['name($i)'])) { 
     $name($i) = ucwords(strtolower($_POST['name($i)'])); 
     $parser = new HumanNameParser_Parser($name($i)); 
     $fname($i) = $parser->getFirst(); 
     $lname($i) = $parser->getLast(); 
    } 
    else 
    { 
     break; 
    } 
} 

을하지만 내가 실제로 내 예에서 ($ I)에 사용해야하는지 파악 힘든 시간을 보내고 있어요. 나는 $ i와 [$ i]를 시도했지만 오류가 계속 발생합니다. 그리고 $ _POST에서 코드를 작성해야하는 방식이 $ name 변수와 다른지 확실하지 않습니다.

답변

1

. 어떤 이유로 nameparser는이 방법을 사용하여 변수를 정의하는 치명적인 오류를 던졌습니다.
+0

감사합니다. 이것은 완벽하게 작동했습니다. – Tom

0

당신이

for ($i=2; $i <= 6; $i++) 
{ 
if (!empty($_POST["name$i"])) { 
    $name[$i] = ucwords(strtolower($_POST["name$i"])); 
    $parser = new HumanNameParser_Parser($name[$i]); 
    $fname[$i] = $parser->getFirst(); 
    $lname[$i] = $parser->getLast(); 
    } 
else 
    { 
    break; 
    } 
} 
+0

감사처럼 될 것 ${'name' . $i};

로 교체 할 수있는 $ _POST 변수에 대한

$name = array(); $fname = array(); $lname = array(); for ($i=2; $i <= 6; $i++) { if (!empty($_POST['name_'.$i])) { $name[$i] = ucwords(strtolower($_POST['name_'.$i])); $parser = new HumanNameParser_Parser($name[$i]); $fname[$i] = $parser->getFirst(); $lname[$i] = $parser->getLast(); } else { break; } } 
Tom

0

당신은 그 인덱스를 얻을 수 $_POST['name'.$i]을 사용할 수 있습니다? : 시도 할 수 있습니다. 나는 다음과 같이 제안 할 것이다 :

$people = array(); 
for($i=2; $i<=6; $i++) { 
    if(empty($_POST['name'.$i])) continue; 
    $name = ucwords(strtolower($_POST['name'.$i])); 
    $parser = new HumanNameParser_Parser($name); 
    $people[$i] = array("first"=>$parser->getFirst(),"last"=>$parser->getLast()); 
} 

이것은 $people 배열이 될 것이다. 이것은 가변 변수보다 더 유용하다.

0

이와 비슷한? 당신이 $_POST['name' . $i]를 사용하고 이름 변수에 대해 그냥 그래서이

for ($i=2; $i <= 6; $i++) 
{ 
if (!empty($_POST['name' . $i])) { 
    ${'name' . $i} = ucwords(strtolower($_POST['name' . $i])); 
    $parser = new HumanNameParser_Parser(${'name' . $i}); 
    ${'fname' . $i} = $parser->getFirst(); 
    ${'lname' . $i} = $parser->getLast(); 
    } 
else 
    { 
    break; 
    } 
}