protected function filterValues($values, $filters)
{
$filteredValues = array();
foreach ($values as $key => $value) {
foreach ($filters as $func => $params) {
if (function_exists($func)) {
if ($value instanceof \ArrayObject) {
$value = (array) $value;
}
if (is_array($value)) {
$filteredAry = array();
foreach ($value as $k => $v) {
if (null !== $params) {
$pars = !is_array($params) ? array($v, $params) : array_merge(array($v), $params);
$filteredAry[$k] = call_user_func_array($func, $pars);
} else {
$filteredAry[$k] = $func($v);
}
}
$filteredValues[$key] = $filteredAry;
$value = $filteredAry;
} else {
if (null !== $params) {
$pars = !is_array($params) ? array($value, $params) : array_merge(array($value), $params);
$filteredValues[$key] = call_user_func_array($func, $pars);
} else {
$filteredValues[$key] = $func($value);
}
$value = $filteredValues[$key];
}
} else {
$filteredValues[$key] = $value;
}
}
}
return $filteredValues;
}