在项目中,我定义了一个文本块,例如:
$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>
现在,我想从数据库中获取text-block $ 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;
}
任何人都可以给我一个如何实现这一目标的提示吗?
答案 0 :(得分:1)
如果您的$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
,否则您将收到通知级警告。