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依次解析为函数的参数

  • 相关阅读:
    CentOS虚拟机和物理机共享文件夹实现
    集训第六周 数学概念与方法 概率 数论 最大公约数 G题
    集训第六周 数学概念与方法 概率 F题
    集训第六周 E题
    集训第六周 古典概型 期望 D题 Discovering Gold 期望
    集训第六周 古典概型 期望 C题
    集训第六周 数学概念与方法 UVA 11181 条件概率
    集训第六周 数学概念与方法 UVA 11722 几何概型
    DAG模型(矩形嵌套)
    集训第五周 动态规划 K题 背包
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/10475176.html
Copyright © 2011-2022 走看看