zoukankan      html  css  js  c++  java
  • php中如何动态获取函数的参数

    php动态获取函数参数

    一、总结

    一句话总结:a、PHP 在用户自定义函数中支持可变数量的参数列表。其实很简单,只需使用 func_num_args() , func_get_arg() ,和 func_get_args()  函数即可。

    1 <?php
    2 function  demo ()
    3 {
    4     $numargs  =  func_num_args ();
    5     echo  "参数个数为:  $numargs 
    " ;
    6 }
    7 demo ( 'a' ,  'b' ,  'c' );

    b、感觉默认参数也可以实现相同的功能

     1 //用于给用户的某种属性增加或者减少值(最后一个数组参数可用于传递数组数据)
     2 public function operateUserAttr($muid,$attrName=null,$num=null,$paramArr=null){

    1、php动态获取函数参数的函数func_num_args() , func_get_arg() ,和 func_get_args()分别代表什么意思

    a、func_num_args():获取参数数量

        $numargs  =  func_num_args ();
        echo  "参数个数为:  $numargs 
    " ;

    b、func_get_arg():获取哪个参数

    echo  "第二个参数为: "  .  func_get_arg ( 1 ) .  "<br />" ;

    c、func_get_args():获取所有参数

        echo "传入的参数分别为:";
        var_dump($args);

    2、如何学习更简便实用的php动态获取函数参数?

    可以去看thinkphp的框架的源码,尤其是数据库那一块,那里说的很清楚。

    二、php动态获取函数参数

    PHP 在用户自定义函数中支持可变数量的参数列表。其实很简单,只需使用 func_num_args() , func_get_arg() ,和 func_get_args()  函数即可。
    可变参数并不需要特别的语法,参数列表仍按函数定义的方式传递给函数,并按通常的方式使用这些参数。 
     
    1.func_num_args — 返回传入函数的参数总个数
    int func_num_args ( void )
    
    示例
    <?php
    function  demo ()
    {
        $numargs  =  func_num_args ();
        echo  "参数个数为:  $numargs 
    " ;
    }
    demo ( 'a' ,  'b' ,  'c' );
    
    运行结果
    参数个数为: 3
    
     
    2.func_get_args — 返回传入函数的参数列表
    array func_get_args  ( void )
    
    示例
    <?php
    function  demo ()
    {
        $args = func_get_args();
        echo "传入的参数分别为:";
        var_dump($args);
    }
    demo ( 'a' ,  'b' ,  'c' );
    

    运行结果

    传入的参数分别为:
    array (size=3)
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
      2 => string 'c' (length=1)
    
     
    3.func_get_arg — 根据参数索引从参数列表返回参数值
    mixed  func_get_arg  ( int $arg_num  )
    
    示例
    <?php
    function  demo ()
    {
        $numargs  =  func_num_args ();
        echo  "参数个数为:  $numargs <br />" ;
        $args = func_get_args();
        if ( $numargs  >=  2 ) {
            echo  "第二个参数为: "  .  func_get_arg ( 1 ) .  "<br />" ;
        }
    }
    demo ( 'a' ,  'b' ,  'c' );
    
    运行结果
    参数个数为: 3
    第二个参数为: b
    

    参考:php动态获取函数参数 - 雪山飞猪 - 博客园
    https://www.cnblogs.com/chenqionghe/p/4817275.html

    三、用函数默认参数实现php动态支持函数参数

    用默认参数,如果调用函数的时候传递的是非数组参数,就用非数组的方式传入参数,否则用数组的方式传入参数

     1 //用于给用户的某种属性增加或者减少值(最后一个数组参数可用于传递数组数据)
     2 public function operateUserAttr($muid,$attrName=null,$num=null,$paramArr=null){
     3     $user=$this->getUserById($muid);
     4     if($attrName&&$num){
     5         $user[$attrName]+=$num;
     6     }else if($paramArr){
     7         //传入参数为数组的情况
     8         foreach ($paramArr as $key=>$val){
     9             $user[$key]+=$val;
    10         }
    11     }
    12     $ans=db('myself_user')->update($user);
    13     if($ans===false) return false;
    14     else return true;
    15 }

    调用

    1 //4、测试用户模型的增加属性方法
    2 public function test3(){
    3     $modelUser=new ModelUser();
    4     $muid=base64_decode(session('muid'));
    5     $ans=$modelUser->operateUserAttr($muid,null,null,['mu_programme'=>10,'mu_luck'=>20]);
    6 }
     
  • 相关阅读:
    【C++ 学习笔记】 Vector
    【AWS】 AWS Free Usage Tier
    【C++ 学习笔记】 MFC CEdit
    【MySql】MySql安装和ODBC设置
    【C++ 学习笔记】 变量转换
    【Perl学习笔记】列表和数组
    【C++ 学习笔记】 值传递
    【Java 学习笔记】 MyEclipse各种细节
    【NLP】 向量空间模型
    【Linux】 Cygwin操作总结
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9501474.html
Copyright © 2011-2022 走看看