Intereting Posts
Как вызвать URL-адрес JSON в php, который включает пробелы в запросе Как отлаживать запросы базы данных PDO? Захват текста между квадратными скобками после подстроки в PHP Использование awk для удаления знака Byte-order Минимизация окончательного вывода HTML с использованием регулярных выражений с помощью CodeIgniter PHP: как читать текущую дату / время с сервера, а не из php.ini отображение сообщения после перенаправления пользователя на другую веб-страницу Есть ли доступный PHP-скрипт, который может захватить скриншот URL-адреса? создание xml-файла при открытии с помощью winrar, Zip-файл, полученный через отчеты Cakephp MediaViews Неожиданный конец архива Минималистичный механизм ведения блога PHP с уделением особого внимания качеству кода Функция / процедура PHP для динамического связывания вопросительных знаков regex php, строка соответствия с переменным текстом (буквы, цифры, подчеркивание, ) тестирование cURL кода не работает Неопределенный индекс в сообщении PHP

Можно ли добавить к функции filter_var () пользовательские параметры?

Я использую функцию filter_var () с FILTER_CALLBACK.
Что-то вроде этого:

$value = filter_var($value, FILTER_CALLBACK, array('options' => 'my_func')); 

my_func () обычно получает значение $ в качестве аргумента:

 function my_func($val) { if (some cond) { return $val; } else { return false; } } 

Теперь я хочу использовать другую переменную $ var в my_func () из внешней области (я имею в виду с filter_var ()).
Один из вариантов – объявить его глобальным в функции. Другой – передать его в качестве аргумента.
Как я могу избежать объявления global и передать аргумент $ var как аргумент?

Solutions Collecting From Web of "Можно ли добавить к функции filter_var () пользовательские параметры?"

Если вы используете PHP 5.3+, вы можете использовать закрытие:

 function my_func($val, $arg1, $arg2) { return $arg1.': '.$val.' '.$arg2; } $testVar = 'test'; $result = filter_var($testVar, FILTER_CALLBACK, array('options' => function($var) { return my_func($var, 'someValue', 'someOtherValue'); })); var_dump($result); // string(30) "someValue: test someOtherValue" 

Конечно, этот пример не действительно «проверяет» что-либо, просто немного меняет текст, но он должен дать вам представление о том, как это работает.

EDIT: судя по комментариям, вы хотите использовать определенную функцию для определенных значений, не проверяя, какой из них использовать в каждом цикле. Считаете ли вы использование call_user_func ? Вот пример:

 function myFunc1($arg1, $arg2) { return 'Executed myFunc1 with arguments: '.$arg1.' '.$arg2; } function myFunc2($arg1, $arg2) { return 'Executed myFunc2 with arguments: '.$arg1.' '.$arg2; } $functionsToUse = array( 'myFunc1', 'myFunc2' ); foreach ($functionsToUse as $func) { echo call_user_func($func, 'value', 'another value').'<br>'; } 
 function my_func($val,$val2=null) { if (some cond) { return $val; } else { return false; } }