Php. Пример использования array_reduce для проверки заполнености данных формы

Главная  >>  Backend  >>  Php. Пример использования array_reduce для проверки заполнености данных формы

Недавно стала простая задача проверить все ли данные в форме заполнены и в зависимости от этого — пропускать пользователя дальше или нет. Специфика задачи была в постепенном заполнении данных через ТГ-бота с последующим сохранением в кеш. Дабы не городить цикл — решил задачу при помощи array_reduce. В этой статье пример решения задачи.

Итак на входе мы имеем простой массив, который изначально имеет такой вид:

По мере наполнения даных массив принимает такой вид:

Т.е. данные заменяют null-ы — и в случае когда всё будет заполнено — в массиве не должно быть null-ов.

Решение задачи через array_reduce:

Array_reduce проходит по каждому элементу массива и, в соответствии с анонимкой, сводит его к единому значению. В моём случае это должно было быть значение true или false — т.е. все данные заполнены или нет.

Вторым параметром передается начальное значение true — т.е. считаем, что все элементы заполнены. В случае, если анонимка встречает null — возвращается false. Если нет — логическое выражение $result && true. В $result — всегда находится текущий результат выполнения, в $value — значение текущей итерации.

Таким образом, если встретится хоть один null — метод вернет false и указанное выше логическое значение никогда не поменяется на false, даже если после null встретится заполненный и валидный элемент.

Не хочу сказать, что это идеальное или условно «правильное» решение — но как демонстрация работы функции и относительно лаконичное и короткое решение задачи вполне сойдет.

Надеюсь статья была полезной — удачи!