Типичная ошибка с explode

Наверняка многие, кто хоть чуть-чуть знает php, знает и замечательную функцию explode(). Она разбивает строку с указанным разделителем на элементы массива. И вот давайте рассмотрим типичную конструкцию:

/* Конвертировать значения через запятую в массив */

$items = explode(',', $items);

/* Создание внутреннего HTML */

foreach ($items as $item) {

    $item = trim($item);

    $output .= "\n" . "<option value=\"{$item}\">{$item}</option>");

}

В чем же здесь ошибка? Здесь логическая ошибка - не проверяется на отсутствие значения $items. Чем это чревато? Тем, что как минимум один цикл foreach обязательно выполнится. Почему? Потому что explode всегда вернет массив минимум с одним, хоть и пустым элементом. Но пустое будет значение у этого элемента, но сам элемент будет, а значит массив уже не пустой. Вот попробуйте выполнить вот эту конструкцию:

print "<pre>";

$s = '';

var_dump($s);

$s = explode(",", $s);

var_dump($s);

print count($s);

foreach($s as $f){

    var_dump($f);

}

Результатом такой ошибки будет, к примеру, вот такой код:

<select name="size"><option value="">Выбрать размер</option>

    <option value=""></option>

</select>

Как видите, здесь есть пустой элемент option.