protected function compareAndRemoveMatchingDefaultValues(array $defaults, array &$routeValues)
{
foreach ($defaults as $key => $defaultValue) {
if (!isset($routeValues[$key])) {
if ($defaultValue === '' || $key === '@format' && strtolower($defaultValue) === 'html') {
continue;
}
return false;
}
if (is_array($defaultValue)) {
if (!is_array($routeValues[$key])) {
return false;
}
if ($this->compareAndRemoveMatchingDefaultValues($defaultValue, $routeValues[$key]) === false) {
return false;
}
continue;
} elseif (is_array($routeValues[$key])) {
return false;
}
if (strtolower($routeValues[$key]) !== strtolower($defaultValue)) {
return false;
}
unset($routeValues[$key]);
}
return true;
}