在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、总结一句话总结: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 \n" ; 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 \n" ;
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 \n" ; } 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动态获取函数参数 - 雪山飞猪 - 博客园
三、用函数默认参数实现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 }
|
2022-08-17
2022-11-06
2022-07-18
2022-08-17
2022-07-18
请发表评论