Difference in behaviour of func_num_args,func_get_arg and func_get_args from php 5.2 to 5.3

前端 未结 2 1351
情书的邮戳
情书的邮戳 2021-01-12 02:46

I have seen the PHP manual. But I don\'t understand the difference in behaviour between the earlier version and the later versions of PHP. I don\'t understand this statement

相关标签:
2条回答
  • 2021-01-12 02:58

    If you wanted to pass the result of one of those functions to another function or a method, in versions of PHP prior to 5.3 you had to first assign the result to a variable.

    function some_func() {
        $args = func_get_args();
        some_other_func($args);
    }
    

    This limitation was removed in PHP 5.3 and you can now pass the result directly.

    function some_func() {
        some_other_func(func_get_args());
    }
    

    As to why this limitation existed in the first place, perhaps someone with a more thorough understanding of PHP's internals can give you a more complete answer.

    0 讨论(0)
  • 2021-01-12 03:00

    It means that this is invalid in 5.2:

    function foo() {
        $array = array_map('strtolower', func_get_args());
    }
    foo('BAR', 'BAZ');
    

    It will abort with a Fatal error:

    PHP Fatal error: func_get_args(): Can't be used as a function parameter

    However in 5.3, it is valid code.

    0 讨论(0)
提交回复
热议问题