在一个项目中,我定义了一个文本块,例如:
$test = '<div>Name'.$i.': <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.': <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.': <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%: <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级警告