我有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。
我缺少什么?
答案 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
。