I might be off here, but I believe the issue with that is that it's a
performance problem. You would have to check each key and function
parameter for a match, which would be slow.

You can, however, achieve what you're after just by using an array without
any packing/unpacking.

function foo(Array $args) {

    // Expected arguments
    $default = ["name" => null, "birthday" => null];
    // Get actual arguments
    $input = array_intersect_key($args, $default) + $default; // final

    if (!isset($input['name'])) {
        // ohnoes you forgot your name
    }

    if (!isset($input['birthday'])) {
        // ohnoes you forgot your birthday
    }

    // otherwise use $Input['name'] and $input['birthday'] here...

}

On Sat, Mar 14, 2020 at 10:43 AM Midori Koçak <mtko...@gmail.com> wrote:

> Dear Internals,
>
> I would like to as you a question. I know that it is possible to use an
> array to function parameters like: function(...array); But this method is
> not working when the array is associative.
>
> Would not be fine if an array like ['param1'=>'value', 'param2' => 'value']
> would be used in a function like function(param1, param2) regardless of the
> order?
>
> I think it would make our lives is easier. I'd be also happy if you know if
> there is more effective method to achieve the same result.
>
> Thanks,
> Midori
>

Reply via email to