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


Incrementing multiple variables in PHP For loop

我有一个区分名字和姓氏的代码,我在一个最多可以有十个名字的表单上使用它。现在,我只是简单地多次复制代码,手动更新数字,但我认为必须有一种方法来循环这个函数。

基本代码是:

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

对于$_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;
  }
}

你能试试这个吗?:

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

您可以使用$_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数组,它比变量更可用。

类似的东西?

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