通常、これでexplodeを使用できますが、クリーンアップを行う必要があるため、explodeを使用するだけでは単純なアプローチです。
$array = array_filter( array_map('trim', explode(',', $teams ) ) );
これは3つのことを行います。
- カンマで$teamsを分解する
- 各アイテムに対して関数を実行する配列マップ。この場合は、空白を削除するトリム
- この
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
vsIndia
。
小文字にするには、strtolower()
を使用します 最初の文字を大文字にするには、ucfirst()
のみを使用します
また、私はこれをテストしていませんが、私が作成した可能性のあるタイプミスを除いて、かなり近いはずです。