我有这样的代码,我的问题是当生成每个字段时,在为每个字段的值添加值时没有工作的value="",只有这个问题。
<?php
$adm['web'] = "www.tuweb.com";
$adm['titulo'] = "Mi título web";
$campos = array('adm[web]','adm[titulo]');
for ($i=0; $i<count($campos); $i++) {
?>
/* add values in each field in the value="" */
<input type="text" name="<?php echo $campos[$i]; ?>" value="<?php echo ${$campos[$i]}; >"/>
<?php } ?>
我的问题是当生成每个字段时,在每个字段的值中没有工作的value=""添加值,只有这个问题。
${$campos[$i]}
评估为 ${adm[web]}
. 你没有一个名为"adm[web]
". 你有一个名为""的变量。adm
",其中有一个名为"web
". 不过变量插值不能解决这个问题。
解决办法是使用 $campos = array($adm['web'], $adm['titulo'])
而不是你正在尝试的复杂的变通方法。
只有当你把文本字段命名为数组变量名,并且它的值是你想要的值时,你才会这样做。
<?php
$adm['web'] = "www.tuweb.com";
$adm['titulo'] = "Mi título web";
$campos = array('adm[web]'=>$adm['web'], 'adm[titulo]'=>$adm['titulo']);
foreach($campos as $key=>$value){
?>
<input type="text" name="<?php echo $key; ?>" value="<?php echo $value; ?>" />
<?php } ?>
这将设置 adm[web] 和 adm[titulo] 文本字段名称 {听起来很腥}。
更好的办法是
<?php
$adm['web'] = "www.tuweb.com";
$adm['titulo'] = "Mi título web";
$campos = $adm;
foreach($campos as $key=>$value){
?>
<input type="text" name="<?php echo $key; ?>" value="<?php echo $value; ?>" />
<?php } ?>
它将把字段名设置为数组键,即'web'和'titulo'。
希望对你有帮助
虽然很脏,但你可以做。
echo eval('return $'. $campos[$i] . ';');
所以,它会是。
<input type="text" name="<?php echo $campos[$i]; ?>" value="<?php echo eval('return $'. $campos[$i] . ';');?>" />
<?php
echo eval('return $'.preg_replace('~(?<=\[)(.*?)(?=\])~',"'$1'",$campos[$i]).';')
?>