1

次のような値(郊外)を持つ文字列があります:

$suburbs = "Mawson, Elizabeth, Burnside, Elizbeth, Mawson";

文字列に含まれる郊外にダブルアップがある可能性があります。この事実を変えることはできません。

私がやろうとしているのは、ユーザーが使用するドロップダウン メニューのオプション リストを作成することです。同じ郊外を 2 回 (またはそれ以上) 表示したくありません。

私がこれまでに持っているもの:

$suburbs = "Mawson, Elizabeth, Burnside, Elizbeth, Mawson";
//Explode the suburbs string delimited by a comma
$boom = explode(',', $suburbs);

foreach($boom as $b)
{
$suburbOptionList .= '<option value='.$b.'>'.$b.'</option>';
}
?>
<select> <?php
echo $suburbOptionList;
?>
</select>

これですべてのオプションが表示されることはわかっていますが、各郊外を一度だけ表示する方法が本当にわかりません。私はいくつかの foreach と if の組み合わせを試しましたが、見栄えが悪く、うまく機能しません。

どんな助けでも大歓迎です。事前に乾杯!

4

1 に答える 1

7

$boom をarray_unique()に渡せば問題ありません。

$bada_boom = array_unique($boom);

PS: 重複にタイプミスやバリエーションがある場合、これは役に立ちません。(Elizbeth != エリザベス)。その場合、あなたは創造的になる必要があります。

また、hw (コメント) は、空白のトリミングについて良い点を指摘しました。郊外が信頼できないソースからのものであり、不適切にフォーマットされている場合は、それらを正規化する必要がある場合があります。これは、空白をトリミングし、大文字を正規化することを意味します。

$boom = array_walk($boom, 'trim');
$boom = array_walk($boom, 'strtolower');
$bada_boom = array_unique($boom);
于 2013-06-07T13:44:24.413 に答える