Почему ноль пропадает при фильтрации массива PHP
После array_filter из набора исчезает строка "0". Без callback функция удаляет все значения, которые PHP считает ложными. Для формы это часто слишком широкое условие.
$values = array( "", "0", null, "42" );
$values = array_filter( $values, function( $value ) {
return $value !== "" && $value !== null;
} );
$values = array_values( $values );
Так остаются строка "0" и число 0. array_values нужен, если результат должен стать JSON-массивом с последовательными индексами. Пробельная строка здесь считается заполненной: если её нужно исключить, сначала определите правила нормализации. Не применяйте trim к вложенным массивам.