Typisk kan du bruge explode med dette, men blot at bruge explode er en naiv tilgang, da der skal ryddes lidt op,
$array = array_filter( array_map('trim', explode(',', $teams ) ) );
Dette gør 3 ting.
- eksploder $teams med komma
- array map, som kører en funktion mod hvert element, i dette tilfælde trim, som fjerner mellemrum
- matrixfilter, som fjerner tomme elementer, hvis du har et element som dette
item,,
- Bemærk dog, at array_filter også vil fjerne elementer medfalse
og0
såvel som tomme, men i dette tilfælde burde det være tilstrækkeligt.
At konvertere arrayet til din markup nu burde være relativitets trivielt,
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>';
Der er ingen grund til at vælge standardelementet, hvis det gengives først, og der ikke er noget valg, vil det blive valgt som standard, $selection
er kun for form klæbrighed, og du kan udelade eller ændre det, som dine behov dikterer.
Sidste ting er, at du bliver nødt til at se hylstret her, fordi du har blandet hylster, så jeg er ikke 100 % sikker på, hvilken du vil have, for eksempel india
vs India
.
Brug strtolower()
for at bruge små bogstaver for at bruge stort første bogstav kun ucfirst()
Jeg har heller ikke testet dette, men det burde være ret tæt på minus eventuelle stavefejl, som jeg kunne have lavet.