|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hello :-)
Is it possible to pass all arguments to another function? function A() { B(func_get_args()); } function B() { var_dump(func_get_args()); } I dont know how many arguments will come for A, and i want A to handle them transparent and pass all to B. Now i'm doing this with func_get_args but I get an array ob B's input. original arguments would be better. Is this possible in any way? TIA 8-) |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
zapzap wrote:
> Hello :-) > > Is it possible to pass all arguments to another function? > > function A() > { > B(func_get_args()); > } > > function B() > { > var_dump(func_get_args()); > } > > > I dont know how many arguments will come for A, and i want > A to handle them transparent and pass all to B. > Now i'm doing this with func_get_args but I get > an array ob B's input. original arguments would be > better. Is this possible in any way? function b($array) { if(is_array($array)) { foreach($array AS $var) { var_dump($var); } } else { var_dump($array); } } -- //Aho |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
J.O. Aho wrote:
> zapzap wrote: >> Hello :-) >> Is it possible to pass all arguments to another function? >> function A() >> { >> B(func_get_args()); >> } >> >> function B() >> { >> var_dump(func_get_args()); >> } >> I dont know how many arguments will come for A, and i want >> A to handle them transparent and pass all to B. >> Now i'm doing this with func_get_args but I get >> an array ob B's input. original arguments would be >> better. Is this possible in any way? > function b($array) { > if(is_array($array)) { > foreach($array AS $var) { > var_dump($var); > } > } else { > var_dump($array); > } > } No no no ;-) My fault, see this: // function A() { B(); // THIS NEEDS TO BE CHANGED PROBLY :> } // function B() { var_dump(func_get_args()); } So, I will NEVER call B directly, i'll always call A an A will call B for me. B is loaded/generated dynamicaly, so one time B requires 2 arguments, sometimes 5 arguments. As i said i will only call A, sometimes A($var1,$var2,$var3), other A($var1). How can I tell A to pass all its arguments to B - WITHOUT having them as an array (as result of fun_get_args in my previous posting). I hope this is clear now ;-) sorry for my english |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
zapzap wrote:
> J.O. Aho wrote: >> zapzap wrote: >>> Hello :-) >>> Is it possible to pass all arguments to another function? >>> function A() >>> { >>> B(func_get_args()); >>> } >>> >>> function B() >>> { >>> var_dump(func_get_args()); >>> } >>> I dont know how many arguments will come for A, and i want >>> A to handle them transparent and pass all to B. >>> Now i'm doing this with func_get_args but I get >>> an array ob B's input. original arguments would be >>> better. Is this possible in any way? >> function b($array) { >> if(is_array($array)) { >> foreach($array AS $var) { >> var_dump($var); >> } >> } else { >> var_dump($array); >> } >> } > > No no no ;-) My fault, see this: > > // > function A() > { > B(); // THIS NEEDS TO BE CHANGED PROBLY :> > } > > // > function B() > { > var_dump(func_get_args()); > } > > > So, I will NEVER call B directly, i'll always call A > an A will call B for me. If you want the arguments that are used when you call function A(), you need to use func_get_args() in function A(), so you would need to use b(func_get_args()). As you see from b(), it won't present your variables inside a array. -- //Aho |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
J.O. Aho wrote:
> If you want the arguments that are used when you call function A(), you need > to use func_get_args() in function A(), so you would need to use > b(func_get_args()). As you see from b(), it won't present your variables > inside a array. Ok, thanks :-) Array is not bad, but I thought I could do this in a more "transparent" way, without "touching" the arguments. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Also sprach zapzap:
> Is it possible to pass all arguments to another function? Yes: http://de2.php.net/call_user_func_array. function A() { $tmp = func_get_args(); return call_user_func_array( 'B', $tmp ); } function B() { /* do something */ } BTW, you cannot pass func_get_args() directly as a parameter to call_user_func_array(), as PHP will get confused and report an error. Therefore, it is necessary to go via the $tmp variable. Greetings, Thomas -- C'est pas parce qu'ils sont nombreux a avoir tort qu'ils ont raison! (Coluche) |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Thomas Mlynarczyk wrote:
> Also sprach zapzap: >> Is it possible to pass all arguments to another function? > Yes: http://de2.php.net/call_user_func_array. > function A() > { > $tmp = func_get_args(); > return call_user_func_array( 'B', $tmp ); > } > function B() { /* do something */ } > BTW, you cannot pass func_get_args() directly as a parameter to > call_user_func_array(), as PHP will get confused and report an error. > Therefore, it is necessary to go via the $tmp variable. Great! Thanks! Danke! This solves my problem permanently 8-) |
|
![]() |
| Outils de la discussion | |
|
|