用数组取值的Php

问题描述 投票:0回答:4

我有这样的代码,我的问题是当生成每个字段时,在为每个字段的值添加值时没有工作的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=""添加值,只有这个问题。

php arrays string multidimensional-array custom-fields
4个回答
2
投票

${$campos[$i]} 评估为 ${adm[web]}. 你没有一个名为"adm[web]". 你有一个名为""的变量。adm",其中有一个名为"web". 不过变量插值不能解决这个问题。

解决办法是使用 $campos = array($adm['web'], $adm['titulo']) 而不是你正在尝试的复杂的变通方法。


1
投票

只有当你把文本字段命名为数组变量名,并且它的值是你想要的值时,你才会这样做。

<?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'。

希望对你有帮助


0
投票

虽然很脏,但你可以做。


echo eval('return $'. $campos[$i] . ';');

所以,它会是。


<input type="text" name="<?php echo $campos[$i]; ?>" value="<?php echo eval('return $'. $campos[$i] . ';');?>" />

0
投票
<?php
    echo eval('return $'.preg_replace('~(?<=\[)(.*?)(?=\])~',"'$1'",$campos[$i]).';')
?>
© www.soinside.com 2019 - 2024. All rights reserved.