|
Posted by Rik on 08/15/06 23:07
Adam wrote:
> Thanks for your help so far... I had to type it from memory, so agree
> that the "case 0:" was dead wrong!
>
> The reason for using the multi arg input is twofold...
>
> 1. I am placing the vars into sprintf (to construct a MySQL query)
> which is itself a variable arg function (hence why I don't think I can
> use an array here).
Euhm. vsprintf()? Takes an array, loves it actually.
> 2. Using an array just means I need a few extra lines of code to move
> all of the random query bits into an intermediate array to stick into
> the function. I would prefer to be able to list them in the function
> call.
>
> I am aware that there are other ways to do this, but I am aiming for
> an ultra elegant solution. Maybe I'm being a bit pedantic about
> it!?! : )
Well, the best I can do to achieve what I think you want:
Call an arbitrary function with an arbitrary amount of arguments, switching
scalars and arrays like it doesn't care, the first argument given is the
function, be it in a scalar or the first scalar in the first array (of the
first array and so forth):
<?php
function flatten_array($arg){
if(!is_array($arg)) return array($arg);
$return = array();
foreach($arg as $row){
if(is_array($row));
$return = array_merge($return,flatten_array($row));
} else {
$return[] = $row;
}
}
return $return;
}
function varargsfunction(){
$array = func_get_args();
$array = flatten_array($array);
$function = array_shift($array);
return call_user_func_array($function,$array);
}
?>
Grtz,
--
Rik Wasmus
Navigation:
[Reply to this message]
|