博客列表 >php----函数的封装及参数长度的控制-----2019.09.28

php----函数的封装及参数长度的控制-----2019.09.28

刂艹亻的博客
刂艹亻的博客原创
2019年09月29日 15:19:34868浏览

php----函数的封装及参数长度的控制

自定义封装的函数,可指定形参的数量,也可不指定数量以及指定数量后扩展数量等

1.未指定数量可使用内置函数 func_get_args() 来获取实际传入的实参的值组成的数组,以及获取他们的数量用 func_num_args() 

2.还有php7+新的特性 剩余参数,定义方式和实际运用来处理传入参数的乘积如下:

所谓的剩余参数是指;在传入的实参数量超过了所指定的数量后,会将形参指定数量以外的值打包到一个数组中

实例

<?php
header("Content-Type: text/html;charset=utf-8");
// 不固定参数数量,变长参数
function product_arr()
{
    //返回实参的数量
    // $argNum = func_num_args();

    //返回真是参数的值组成的数组
    $argNum = func_get_args();
    // $argNum = func_get_arg(0);

    // 普通方法实现乘积
    $product_num = 1;
    foreach ($argNum as $key => $value) {
        $product_num *= $value;
        if ($key + 1 === count($argNum)) {
            return $product_num;
        }
    }

    //利用php内置函数实现
    // $product_num = array_product($argNum);
    // return $product_num;
}
//  print_r(product_arr(range(1,10,1)));//362880
// print_r(product_arr(1,2,3));//6

//变长参数:剩余参数,php7+
function product_arr2(...$argNum)
{

    //普通方法实现
    // $product_num=1;
    // foreach($argNum as $key=>$value){
    //     $product_num *= $value;
    //     if($key+1 === count($argNum)){
    //         return $product_num;
    //     }
    // }

    //利用php内置函数实现
    // $product_num = array_product($argNum);
    // return $product_num;


}

// print_r(product_arr2(range(1,10,1),range(1,10,1)));//362880
print_r(product_arr2(1, 2, 3));

//变长参数2,用来扩展参数

function product_arr3($a, $b, ...$c)
{
    if (!empty($c)) {
        array_push($c, $a, $b);
        //普通方法实现
        // $product_num = 1;
        // foreach ($c as $key => $value) {
        //     $product_num *= $value;
        //     if ($key + 1 === count($c)) {
        //         return $product_num;
        //     }
        // }

        //利用php内置函数实现
        $product_num = array_product($c);
        return $product_num;
    } else {
        return $a * $b;
    }
}
print_r(product_arr3(1, 2, 3,5));

运行实例 »

点击 "运行实例" 按钮查看在线实例





声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议