Arris
@Arris
Сапиенсы учатся, играя.

[SOLVED] Хочется немного магии: filter_input + FILTER_CALLBACK + default value. Как это сделать (красиво)?

Задача: функция должна искать в неком массиве значение и проверять, находится ли оно в списке допустимых. Если его в массиве нет или оно не находится в списке допустимых - должна возвращать дефолтное значение.

Зачем? Ну, к примеру, URL-параметры обрабатывать...

Пытаюсь решить эту задачу с помощью filter_input(), как-то так:
filter_input( $input_array, $required_key, FILTER_CALLBACK, array(
   'options' => function($key)use($allowed_values, $default_value) { 
        return in_array($key, $allowed_values) ? $key : $default_value; },
   'default'   =>  $default_value  ))


Понятно, что можно решить задачу "классическими" средствами с вложенным if'ом. Но хочется немного лунного сахара.
Возможно ли это?
  • Вопрос задан
  • 307 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Вы что-то странное делаете.
filter_input — Принимает переменную извне PHP и, при необходимости, фильтрует ее
Извне, в смысле данные которые пришли через POST или GET, например.
php.net/manual/ru/function.filter-input.php

Возможно, вам больше подойдет filter_var() или filter_var_array().

Ну и классика:
$input = 42;
$allowed = [1, 2, 3, 5, 7];
$default = 1;
$result = in_array($input, $allowed) ? $input : $default;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы