Normalmente, você pode usar explodir com isso, no entanto, apenas usar explodir é uma abordagem ingênua, pois há um pouco de limpeza a ser feita,
$array = array_filter( array_map('trim', explode(',', $teams ) ) );
Isso faz 3 coisas.
- explodir $teams por vírgula
- mapa de matriz, que executa uma função em cada item, neste caso trim, que remove os espaços em branco
- filtro de matriz que remove itens vazios caso você tenha um item como este
item,,
- note que array_filter também removerá elementos comfalse
e0
bem como vazios, mas neste caso deve ser suficiente.
Agora, converter a matriz para sua marcação deve ser trivial,
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>';
Não há necessidade de selecionar o item padrão, se ele for renderizado primeiro e não houver seleção, ele será selecionado por padrão, a
$selection
é apenas para aderência do formulário e você pode omitir ou modificar isso conforme suas necessidades. A última coisa é que você terá que observar a caixa aqui, porque você tem caixa mista, então não tenho 100% de certeza de qual você quer, por exemplo
india
vs India
. Para letras minúsculas, use
strtolower()
para maiúscula a primeira letra use apenas ucfirst()
Também não testei isso, mas deve ser bastante próximo menos quaisquer erros de digitação que eu possa ter feito.