Передача полей формы и чистка массива от пустых значений.

array_diff — Вычислить расхождение массивов
implode — Объединяет элементы массива в строку

Отличная функция для чистки массива от пустых значений array_diff. На одном из сайтом потребовалось создать форму с отправкой полей с одинаковым name. Не буду долго рассуждать и сразу начну с решения с моего сайта.

Создаем форму:

<form>
   <input type="text" name="servises[]">
   <input type="text" name="servises[]">
   <input type="text" name="servises[]">
   <input type="text" name="servises[]">
   <input type="text" name="servises[]">
   <button type="submit">Отправить</button>
</form>

Формой я отправляю значения из полей servises и передаю в переменную $servises:

$servises = $_POST['servises']

То есть теперь моя переменная $servises является массивом значений из полей. Но для моей задачи нужно было передать не массив значений, а только значения. Для этого я воспользовался функцией implode. Эта функция объединяет массив в строку значений.

$s_array = implode('||', $servises)

Что же я сделал, я создал новую переменную $s_array далее вызвал функцию implode, указал разделитель значений || и добавил массив с переменной $servises. То есть на выходе я получаю значения: Услуга 1||Услуга 2||Услуга 3||Услуга 4||Услуга 5. Далее я просто сохраняю эту строку в базу данных и вывожу на сайте.

После нескольких экспериментов с сохранением значение было обнаружено, что если остаются пустые поля значения, то они так же сохраняются в базе данных в таком не красивом виде: Услуга 1||||||||Услуга 5. Покопавшись в интернете обнаружил отличную функцию array_diff — Вычисляет расхождение массивов.

$d_servises = array_diff($servises, array(''));
$res_servises = implode('||', $d_servises)

В этом примере так же все просто как и в прошлом. Создаем переменную $d_servises с помощью функции array_diff чистим массив $servises от пустых значений, после чего в новой переменной $res_servises берем уже почищенный массив $d_servises с помощью implode преобразуем массив в строку и задаем разделитель ||. На выходе получаем строку Услуга 1||Услуга 5 после чего я сохранял ее в базу данных сайта.