PHP: Print out all Variables passed to a Function CodeUnit 04 JUN 2010

Working on old scripts can be quite annoying, particularly when you encounter an undocumented function and are trying to figure out firstly which inputs that function accepts, and secondly what it actually then does with it!

Of course, the easiest way of determining this is to call the function and print out what variables are coming into it, and thanks to some native PHP functions, this turns out to be quite the easy thing to do.

First up is func_num_args() which returns the number of arguments passed into the current user-defined function. Then comes the handy func_get_args() which returns an array which contains all the arguments (corresponding to the user-defined function’s argument list) passed into the function. Finally, func_get_arg() is used to return a specified argument from the passed in arguments, starting from a zero index.

If we grab a test argument to show all of the above functions in action, we get this: (grabbed off the main PHP documentation site)

function foo()
    $numargs = func_num_args();
    echo "Number of arguments: $numargs
n"; if ($numargs >= 2) { echo "Second argument is: " . func_get_arg(1) . "
n"; } $arg_list = func_get_args(); for ($i = 0; $i < $numargs; $i++) { echo "Argument $i is: " . $arg_list[$i] . "
n"; } } foo(1, 2, 3);

Quite handy little functions, aren’t they?

(And to think that I didn’t even know of their existence up until now! :P)

Related Posts:

About Craig Lotter

South African software architect and developer at Touchwork. Husband to a cupcake baker and father to two little girls. I don't have time for myself any more.

  • Thanks Craig. Very useful and more than just handy!

  • No problem, glad I could help out! :)

  • Infinets

    what if the arguments are array or object? i am searching fot it :(

  • Infinets

    Hope this helps…..

    $numargs = func_num_args();
    echo “Number of arguments: $numargsn”;

    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
    if (is_array($arg_list[$i]))
    elseif (is_object($arg_list[$i]))
    echo "Argument $i is: ". func_get_arg($i) ." = " . $arg_list[$i] . "n”;