PDO のfetchAll()
方法に従って、次のように、オプションを含むドロップダウンを生成するために使用する、データベースからの都市の 2 次元配列があります。
foreach($option as $city) {
echo '<option value="'. $city['city_id'] . '">' . $city['city_name'] . '</option>';
}
<optgroup>
これはすべて問題ありませんが、州/州全体から都市のかなり長いリストが返されるため、選択を少しわかりやすくするために、開始文字に基づいてカテゴリ別の「セクション」を動的に追加したいと考えています。結果はすでに名前でソートされているので、その部分は処理されます。
preg_grep()
and を使用しpreg_match()
て配列を小さな配列に分割し、それぞれの optgroup をエコーアウトしようとしましたが、うまくいきません...すべての都市が表示された後、 optgroup Bがリストの一番下に押し込まれます.
$citiesA = preg_grep('/^A.*/', $option);
$citiesB = preg_grep('/^B.*/', $option);
echo '<optgroup label="A">';
foreach($citiesA as $a) {
echo '<option value="'. $a['city_id'] . '">' . $a['city_name'] . '</option>';
}
echo ' </optgroup>';
echo '<optgroup label="B">';
foreach($citiesB as $b) {
echo '<option value="'. $b['city_id'] . '">' . $b['city_name'] . '</option>';
}
echo ' </optgroup>';
これを実現する方法についての提案は大歓迎です。