Наверняка многие, кто хоть чуть-чуть знает 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.