我正在做一个项目,我有一个值在表与列"团队",并在该列我有一个记录这样的数据"印度,尼泊尔,巴基斯坦,新加坡"。
在一个视图页面,我需要显示列"团队"与一行中的一个值。这样的:
<select name="tournament_team" class="form-control" >
<option value=''>--- Select Team ---</option>
<option value='india'>India</option>
<option value='nepal'>Nepal</option>
<option value='pakistan'>Pakistan</option>
<option value='singapore'>Singapore</option>
</select>
如何通过逗号识别一列的单独值?
提前感谢。
通常情况下,你可以使用爆炸,但是使用爆炸是一种幼稚的方法,因为有一些清理工作要做,
$array = array_filter( array_map('trim', explode(',', $teams ) ) );
这做了3件事。
- explosion $teams by逗号
- 数组映射,它对每个项运行一个函数,在本例中是trim,它删除空白
- 数组过滤器,删除空项,只是在情况下,你有一个项目像
item,,
-注意,虽然array_filter也将删除元素与false
和0
以及空的,但在这种情况下,它应该是足够的。
现在将数组转换为您的标记应该是相对简单的,
echo '<select name="tournament_team" class="form-control" >';
echo '<option value="">--- Select Team ---</option>';
foreach( $array as $item ){
if($_POST['tournament_team'] == $item){
$selected = ' selected="selected"';
}else{
$selected = '';
}
echo '<option value="'.$item.'"'.$selected.'>'.$item.'</option>';
}
echo '</select>';
不需要选择默认项,如果它首先呈现并且没有选择,那么它将默认被选中,$selection
只是用于形式粘性,您可以根据需要省略或修改它。
最后一件事是你必须注意这里的大小写,因为你有混合的大小写,所以我不能100%确定你想要哪个,例如india
和India
。
用strtolower()
小写,用ucfirst()
大写第一个字母
我也没有测试过这个,但是它应该是相当接近的减去我可能犯的任何拼写错误。
试试explode(string $delimiter, string $string)
explode(",",teams);