zoukankan      html  css  js  c++  java
  • php的参数函数与可变参

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

    <?php
    
    function 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
    a
    Array
    (
        [0] => a
    )
    
    3
    1
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    
    2
    Array
    (
        [0] => d
        [1] => e
    )
    
    Array
    (
        [0] => Array
            (
                [0] => d
                [1] => e
            )
    
        [1] => Array
            (
                [0] => f
            )
    
    )

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

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

    <?php
    
    function 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'));
    
    ?>

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

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

    <?php
    
    function add($a, $b){
        echo $a + $b;
    }
    
    $args = array(1, 2);
    
    add(...$args); // 输出3
    
    ?>

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

    <?php
    
    function 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'));
    
    ?>

    输出:

    name:fdipzone
    tag:programmer
    args:
    Array
    (
    )
    
    name:terry
    tag:designer
    args:
    Array
    (
        [0] => 1
        [1] => 2
    )
    
    name:aoao
    tag:tester
    args:
    Array
    (
        [0] => Array
            (
                [0] => a
                [1] => b
            )
    
        [1] => Array
            (
                [0] => c
            )
    
        [2] => Array
            (
                [0] => d
            )
    
    )

    可变参...总结:

    1,函数定义时的参数使用...$params,那么$params会是一个数组;

    2,函数执行时使用 ...$params ,$param(数组格式)会把$param依次解析为函数的参数

  • 相关阅读:
    C#中double转int时需要注意的地方
    OracleHelper类
    POJ2570, ZOJ1967
    ZOJ3088
    POJ3259(spfa判负环)
    POJ3268
    ZOJ1092 POJ2240
    ZOJ1298 POJ1135
    SRM587 div2
    POJ1679判断最小生成树是否唯一
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/10475176.html
Copyright © 2011-2022 走看看