This is a discussion on Passing variable number of arguments from array to function with call_user_func()? within the PHP Language forums, part of the PHP Programming Forums category; Hello, If I have an array made up of a bunch of key => value pairs, how can I pass ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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 |
|
|||
|
"rob" <rob@rawb.net> schreef in bericht news:1186965770.780865.46300@q75g2000hsh.googlegro ups.com... > Hello, <snip> > 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() |
|
|||
|
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 ================== |
|
|||
|
On 13 Aug, 01:42, rob <r...@rawb.net> 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. |