使用此代码:
$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
)
)
为什么有两个阵列?我原本预计只会打印第二个数组
答案 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
)
)