Passing variable number of arguments from array to function with call_user_func()?

Passing variable number of arguments from array to function with call_user_func()?

am 13.08.2007 02:42:50 von Rob

Hello,

If I have an array made up of a bunch of key => value pairs, how can I
pass the values of each key as an argument to a function, given that
the number of items in the array are not static (i.e: sometimes
there's one item, sometimes there's two)?

For example, if I have the following array:

$list = array('sky' => 'blue', 'grass' => 'green');
$list = array_values($list);

I'd like to pass the two values in $list to a function that has two
arguments, i.e:

function color($sky, $grass) { }

The trick is is that $list will not always contain two items -
sometimes one, three, four, etc, so it has to pass them dynamically to
the function. I know about call_user_func(), and how I can pass
parameters to it, but I'm having a difficult time trying to pass
multiple parameters given that I don't know how many I need to pass.

Can anyone help?

Rob

Re: Passing variable number of arguments from array to function with call_user_func()?

am 13.08.2007 02:45:06 von Nook

"rob" schreef in bericht
news:1186965770.780865.46300@q75g2000hsh.googlegroups.com...
> Hello,



> The trick is is that $list will not always contain two items -
> sometimes one, three, four, etc, so it has to pass them dynamically to
> the function. I know about call_user_func(), and how I can pass
> parameters to it, but I'm having a difficult time trying to pass
> multiple parameters given that I don't know how many I need to pass.
>
> Can anyone help?
>
> Rob
>

call_user_func_array()

Re: Passing variable number of arguments from array to function withcall_user_func()?

am 13.08.2007 03:12:51 von Jerry Stuckle

rob wrote:
> Hello,
>
> If I have an array made up of a bunch of key => value pairs, how can I
> pass the values of each key as an argument to a function, given that
> the number of items in the array are not static (i.e: sometimes
> there's one item, sometimes there's two)?
>
> For example, if I have the following array:
>
> $list = array('sky' => 'blue', 'grass' => 'green');
> $list = array_values($list);
>
> I'd like to pass the two values in $list to a function that has two
> arguments, i.e:
>
> function color($sky, $grass) { }
>
> The trick is is that $list will not always contain two items -
> sometimes one, three, four, etc, so it has to pass them dynamically to
> the function. I know about call_user_func(), and how I can pass
> parameters to it, but I'm having a difficult time trying to pass
> multiple parameters given that I don't know how many I need to pass.
>
> Can anyone help?
>
> Rob
>

Just pass them as an array, i.e.

color($list);

function color ($colors) {
if (is_array($colors))
foreach ($colors as $c)
process one color from the list here
else
process a single color here
}

You might want to make this a function which pulls out each item in the
list and calls another function to process a single color (if the
processing is separate, that is).




--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Re: Passing variable number of arguments from array to function with call_user_func()?

am 13.08.2007 14:21:02 von colin.mckinnon

On 13 Aug, 01:42, rob wrote:
>
> For example, if I have the following array:
>
> $list = array('sky' => 'blue', 'grass' => 'green');
> $list = array_values($list);
>
> I'd like to pass the two values in $list to a function that has two
> arguments, i.e:
>
> function color($sky, $grass) { }
>

call_user_func('color', $list);

function color()
{
$params = func_get_args();
....

But it's much cleaner to do this:

color($list);

function color($list) // expect an array as input
{
....

Which eliminates the positional problems which are exacerbated by
variable argument parsing.

C.