根据逗号分隔值的计数动态创建textarea

时间:2013-06-30 11:21:44

标签: php codeigniter

我有db

返回的这个数组
Array ( [0] => Array ( [id] => 3 [test] => alphy,poxy,jade,auma ) ) 

然后我使用explode来分隔值

$options = explode(",", $test1['0']['test']);

结果是

 array(4) { [0]=> string(5) "alphy" [1]=> string(4) "poxy" [2]=> string(4) "jade" [3]=> string(4) "auma" }

然后我计算值的数量

$count= substr_count($test1['0']['test'], ",")+1;

然后我现在尝试根据计数和值动态创建textareas,例如文本区域1 - alphy,textarea2 - poxy ......

  for($i=0; $i<=$count;$i++){?>
            <textarea ><?php echo $options[$i]['test']?> </textarea>
    <?php }?>

上面没有做,相反每个textarea只有第一个字母,如a,p,j,a而不是alphy,poxy,juma,auma。

我缺少什么?

1 个答案:

答案 0 :(得分:2)

只需迭代$ options数组即可打印出textareas - 无需计算数据。

$test1 = array(array('id' => 3, 'test' => 'alphy,poxy,jade,auma')); 
$options = explode(",", $test1['0']['test']);
foreach ($options as $i => $option) {
    echo '<textarea name="textarea_' . $i . '">' . $option . '</textarea>';
}

当然,如果你真的想要使用计数,你可以这样做:

$test1 = array(array('id' => 3, 'test' => 'alphy,poxy,jade,auma')); 
$options = explode(",", $test1['0']['test']);
$count = count($options);
for ($i = 0; $i < $count; $i++) {
    echo '<textarea name="textarea_' . $i . '">' . $options[$i] . '</textarea>';
}

编辑:鉴于您对问题的修改,您似乎正在尝试访问每个选项的索引('test')。但是一旦它们被分成一个数组,它们就会变成简单的字符串,所以不需要尝试像数组那样访问它们。

您收到第一个字母的原因是因为$x = 'alpha'; $x['test']评估为$x[0],它访问字符串中的第一个字符,即a