为什么func_get_args在数组中返回一个数组?

时间:2017-03-24 20:42:54

标签: php arrays

使用此代码:

$var = array(3,5,6);

function test() {
echo "<pre>";
print_r(func_get_args());
echo "</pre>";
}

test($var);

我明白了:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 5
            [2] => 6
        )

)

为什么有两个阵列?我原本预计只会打印第二个数组

3 个答案:

答案 0 :(得分:1)

让我给你一个提示,希望能帮助你轻松地从文档中找到答案;

 $var = array(3,5,6);

 function test() {
   echo "<pre>";
   print_r(func_get_args());
   echo "</pre>";
 } 
 test($var);

为什么有两个阵列? 您可以从文档中轻松找到答案,并提供更多解释和示例; 对于这个特例: 首先,您在php documentation中查找func_get_args() func_get_args:
Explination 1 :返回一个包含函数参数列表的数组 Explination 2 :返回一个数组,其中每个元素都是当前用户定义函数参数列表的相应成员的副本。

从这些说明中你得到func_get_args返回一个数组,但请记住,在你的代码中,你确实将它与另一个函数print_r结合使用。 然后下一步检查documentation for that function;
print_r:
Explination 1 print_r - 打印有关变量的人类可读信息;
mixed print_r ( mixed $expression [, bool $return = false ] )
Explination 2:如果给定字符串,整数或浮点数,则将打印值本身。如果给定一个数组,则值将以显示键和元素的格式显示。类似的符号用于对象 当return参数为TRUE时,此函数将返回一个字符串。否则,返回值为TRUE

从文档中我可以很容易地找到答案,我一直在寻找示例 希望你能找到有用的

答案 1 :(得分:0)

传递一个数组,该数组是包含该数组的返回数组中的一个参数和一个值。所以你有一个参数的数组条目,它本身就是一个arry

在PHP&gt; = 5.6中,您可以将参数解包(Variable length argument lists)与...一起使用:

test(...$var);

或者您可以将数组元素作为单独的参数传递:

call_user_func_array('test', $var);

两者都屈服:

Array
(
    [0] => 3
    [1] => 5
    [2] => 6
)

答案 2 :(得分:0)

这是this function的正常行为:

  

返回值

     

返回数组,其中每个元素都是相应的副本   当前用户定义函数的参数列表的成员。

$var = array(3,5,6);

function test() {
    echo "<pre>";
    print_r(func_get_args());
    echo "</pre>";
}

test('string');

这将输出如下数组:

Array (
    [0] => string
)

并且只要您将数组作为参数发送,那么该函数将打印出传递的数组作为父数组的元素:

例如,传递一个字符串和一个数组:

$var = array(3,5,6);
function test() {
    echo "<pre>";
    print_r(func_get_args());
    echo "</pre>";
}

test('string', $var);

这将输出:

Array (
    [0] => string 
    [1] => Array ( 
        [0] => 3 
        [1] => 5 
        [2] => 6 
    ) 
)