Say you have a function with three required parameters and three optional ones. You call it three times, each with a different one of the optional parameters. Each time you have four parameters, and positional doesn't work to identify the fourth.

I wrestled with the same thing as Wade, and came up with a hybrid: positional for the required parameters, and an array at the end for optinal ones.

eg:
function clsDB( $db_server, $db_name, $options ){\n    if( $options['debug_level'] > 0 ){\n        $debug_level = $options['debug_level'];\n    }\n    if( $options['test_mode'] > 0 ){\n        $test_mode = $options['debug_level'];\n    }\n    etc ...\n}