php 函数使用可变数量的参数

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

php在用户自定义函数中支持可变数量的参数列表。

在php5.5及更早的版本中,使用func_num_args(), func_get_arg(), func_get_args()函数实现。

<?phpfunction myfunc(){    // 获取参数数量    echo func_num_args().PHP_EOL;    // 获取第一个参数的值:    print_r(func_get_arg(0));    echo PHP_EOL;    // 获取所有参数的值    print_r(func_get_args());    echo PHP_EOL;}myfunc('a');myfunc(1, 2, 3);myfunc(array('d','e'), array('f'));?>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出:

1aArray(    [0] => a)31Array(    [0] => 1    [1] => 2    [2] => 3)2Array(    [0] => d    [1] => e)Array(    [0] => Array        (            [0] => d            [1] => e        )    [1] => Array        (            [0] => f        ))
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37



在php5.6及以上的版本中,可以使用语法实现。

例子1: 使用…$args代替任意数量参数

<?phpfunction myfunc(...$args){    // 获取参数数量    echo count($args).PHP_EOL;    // 获取第一个参数的值:    print_r($args[0]);    echo PHP_EOL;    // 获取所有参数的值    print_r($args);    echo PHP_EOL;}myfunc('a');myfunc(1, 2, 3);myfunc(array('d','e'), array('f'));?>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出结果与php5.5使用func_num_args(), func_get_arg(), func_get_args()函数一致。


例子2: 数组转为参数列表

<?phpfunction add($a, $b){    echo $a + $b;}$args = array(1, 2);add(...$args); // 输出3?>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11


扫描二维码关注公众号,回复: 4956560 查看本文章

例子3: 部分参数指定,其他参数数量不定

<?phpfunction display($name, $tag, ...$args){    echo 'name:'.$name.PHP_EOL;    echo 'tag:'.$tag.PHP_EOL;    echo 'args:'.PHP_EOL;    print_r($args);    echo PHP_EOL;}display('fdipzone', 'programmer');display('terry', 'designer', 1, 2);display('aoao', 'tester', array('a','b'), array('c'), array('d'));?>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

输出:

name:fdipzonetag:programmerargs:Array()name:terrytag:designerargs:Array(    [0] => 1    [1] => 2)name:aoaotag:testerargs:Array(    [0] => Array        (            [0] => a            [1] => b        )    [1] => Array        (            [0] => c        )    [2] => Array        (            [0] => d        ))
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hsyyff/article/details/84195706