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.