2016-09-16 59 views
1

在一个项目中用作变量的变量,我定义文本块如例如:字符串与在一个循环

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

现在,我想从数据库中获取文本块$测试,并用它在循环内,但我无法弄清楚如何修改$ 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; 
    } 

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

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

顺便说一句,你还应该检查是否有isset存在$_POST["name". $i],否则你将得到通知级别警告。

+0

只用真实的代码测试它(更复杂和更大的比这个例子!) - 就像魅力一样。与往常一样,我在考虑更复杂,然后需要... 非常感谢,Jan! –