带有变量的字符串,用作循环中的变量

时间:2016-09-16 12:02:47

标签: php loops variables

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

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

现在,我想从数据库中获取text-block $ 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;
  }   

任何人都可以给我一个如何实现这一目标的提示吗?

1 个答案:

答案 0 :(得分:1)

如果您的$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,否则您将收到通知级警告。