zoukankan      html  css  js  c++  java
  • PHP函数参数

    PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变长度参数列表。
     
    问题:
    1、PHP参数传值和传引用的区别:
    传值:在函数内部改变参数的值,它并不会改变函数外部的值。
    传引用:函数可以修改函数外部的参数值。&表示这是一个传引用的参数,只是一个标志而已。
    举例:
    function add_some_extra(&$string)
    {
    $string .= 'and something extra.';
    }
    $str = 'This is a string, ';
    add_some_extra($str);
    echo $str; // outputs 'This is a string, and something extra.'
    2、如果有多个参数,有些带有默认参数,有些没有默认参数怎么办?
    使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。这和C++的设计一致。
    举例:
     function makeyogurt($param2, $param1= "acidophilus") 
     
    3、如何限制参数类型?
    类型声明允许函数在调用时要求参数为特定类型。 如果给出的值类型不对,那么将会产生一个错误。
    function test(boolean $param) {}
    可是,弱类型语言PHP允许自动将integer类型的参数转换成string类型,这就不得不使用文件严格类型模式了。
    在严格模式中,只有一个与类型声明完全相符的变量才会被接受,否则将会抛出一个TypeError。
    注意:这种严格模式仅限于标量参数,也就是严格模式只能在PHP7中使用。
    <?php
    declare(strict_types=1);
    function sum(int $a, int $b) {
    return $a + $b;
    }
    var_dump(sum(1, 2));
    var_dump(sum(1.5, 2.5));
    ?>
     
    4、如何定义可变长度参数列表,如何获取参数?
    PHP5.5-:
    func_num_args()可以计算参数个数。func_get_arg(arg_num),arg_num表示参数偏移量,从0开始计数。func_get_args()以数组形式获取参数列表。
    PHP5.6+:
    在PHP 5.6及更高版本中,参数列表可能包括“...”,以表示函数接受可变数量的参数。参数将作为数组传递到给定的变量中。
    举例1(5.5):
    function sum( $a, $b) {
    echo func_num_args();//2
    echo func_get_arg(0);//1
    dump (func_get_args());//[0=>1,1=>2]
    echo func_get_args()[0];//1
    return $a + $b;
    }
    sum(1,2);
    举例2(5.6):
    function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
    $acc += $n;
    }
    return $acc;
    }
    echo sum(1, 2, 3, 4);
    注:由于版本原因没有做检查
     
  • 相关阅读:
    vue实现左右两列竖直分别滑动,且双向关联的选项卡(一)
    根据对象的某个字段(值为数字)排序
    如何将data中字符传的换行正常显示
    HBase集群搭建部分配置
    YARN详解
    常用查询函数
    分桶表
    hive分区表
    xsync分发脚本
    ssh免密登录
  • 原文地址:https://www.cnblogs.com/cquptzzq/p/8494036.html
Copyright © 2011-2022 走看看