在循环中使用内部变量作为变量的字符串


String with variables inside used as variable in a loop

在一个项目中,我定义了一个文本块,例如:

$test = '<div>Name'.$i.':&nbsp;<input type="text" name="name'.$i.'" value="'.$_POST['name'.$i].'" /></div>';

文本块然后在for循环中使用,如

$_POST['name1'] = 'Max';
for($i=0;$i<3;$i++){
  $test = '<div>Name'.$i.':&nbsp;<input type="text" name="name'.$i.'" value="'.$_POST['name'.$i].'" /></div>';
  echo $test;
  }  

这会产生期望的结果:

<div>Name0: <input type="text" name="name0" value=""></div>
<div>Name1: <input type="text" name="name1" value="Max"></div>
<div>Name2: <input type="text" name="name2" value=""></div>

现在,我想从数据库中获得文本块$test,并在循环中使用它,但我不知道如何修改变量$ I来工作。

实际上是这样的:

$_POST['name1'] = 'Max';
$string = '<div>Name'.$i.':&nbsp;<input type="text" name="name'.$i.'" value="'.$_POST['name'.$i].'" /></div>';
for($i=0;$i<3;$i++){
  $test = $string;
  echo $test;
  }   

谁能给我一个提示,如何实现这一点?

如果您的$string内容类似于HTML模板,无法在移动中生成,我会将其保存在数据库中,这样使用某种占位符,稍后您将在for循环中替换:'<div>Name%i%:&nbsp;<input type="text" name="name%i%" value="%name%" /></div>'

然后你做

$string = $thatDbStoredTemplate; 
for($i=0;$i<3;$i++){
    $test = str_replace(array("%i%", "%name%"), array($i, $_POST["name". $i]), $string);  
    echo $test;
}   

同时检查$_POST["name". $i]isset是否同时存在,否则会收到Notice级警告