在PHP中增加多个变量For循环

时间:2014-04-17 10:36:32

标签: php variables for-loop

我有一个代码,它首先将名字与姓氏分开,我在一个最多可能有10个名字的表单上使用。现在我只是多次复制代码,手动更新数字,但是必须有一种方法来循环这个函数。

基本代码是:

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

由于fname和lname变量在别处使用,我需要坚持使用命名。

我正在考虑使用For:

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不同。

4 个答案:

答案 0 :(得分:1)

对于$ _POST变量,您可以使用$_POST['name' . $i],对于name变量,您只需将其替换为${'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;
  }
}

答案 1 :(得分: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;
  }
}

答案 2 :(得分: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数组,它比变量变量更有用。

答案 3 :(得分:0)

这样的东西?

$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;
    }
}