More pure code 4 you (working 100%, php>5.3), working with classes and functions.
function call_user_func_assoc($function, $array){
if ((is_string($function)) && (count(explode('::',$function))>1))
$function = explode('::',$function);
$func = ((is_array($function)) || (count($function)>1)) ? new ReflectionMethod($function[0], $function[1]) : new ReflectionFunction($function);
foreach($func->getParameters() as $key => $param) {
if (isset($array[$key]))
$result[$key] = $array[$key];
elseif(isset($array[$param->name]))
$result[$key] = $array[$param->name];
else
$result[$key] = $param->getDefaultValue();
}
return call_user_func_array($function, $result);
}