php可变长参数处理函数详解
本文实例讲述了php可变长参数处理函数。分享给大家供大家参考,具体如下:
与C++一样,PHP中也可以对含有可变参数的函数进行处理,道理都一样,需要函数来专门处理参数列表。PHP中提供了三个相关的函数:
1. func_num_args() -- 返回传递给函数的参数个数
int func_num_args ( void )
示例:
function open_database($DB, $cache_size_or_values=null, $cache_size=null) { switch (function_num_args()) { case 1: $r = select_db($DB); break; case 2: $r = select_db($DB, $cache_size_or_values); break; case 3: $r = select_db($DB, $cache_size_or_values, $cache_size); break; } return is_resource($r); }
2. func_get_arg() -- 返回指定的参数
mixed func_get_arg ( int arg_num)
参数列表中的第一个参数的 arg_num 是0
<?php function some_func($a, $b) { for($i = 0; $i<func_num_args(); ++$i) { $param = func_get_arg($i); echo "the param is $param\n" } } some_func(1,3,5,7,9); ?>
3. func_get_args() -- 以数组的形式返回参数列表
array func_get_args ( void )
示例:
<?php function some_other_func($a, $b) { $param = func_get_args(); $param = join(", ", $param); // 分解显示 echo "the arglist is: $param\n"; } some_other_func(1,3,5,7,9); ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数组(Array)操作技巧大全》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
php定义参数数量可变的函数用法实例
本文实例讲述了php定义参数数量可变的函数用法.分享给大家供大家参考.具体分析如下: php中的的函数参数可以不固定,甚至不用定义参数,在函数内部使用func_get_args()函数获得参数列表,调用时可以为函数指定任意参数,非常方便 <?php function addanything (){ $total = 0; $args = func_get_args (); for ($i = 0; $i < count ($args); $i++){ if (is_int ($args[$i]
-
CodeIgniter与PHP5.6的兼容问题
错误提示: A PHP Error was encountered Severity: Notice Message: Only variable references should be returned by reference Filename: core/Common.php Line Number: 257 原代码: return $_config[0] =& $config; 修改后: $_config[0] =& $config; return $_config[0]; 以上
-
php 函数使用可变数量的参数方法
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()
-
apache集成php5.6方法分享
apache对php的支持是通过apache的mod_php5模块来支持的,这点与nginx不同.nginx是通过第三方的fastcgi处理器才可以对php进行解析. 如果源码编译安装php的话,需要在编译时指定--with-apxs2=/usr/local/apache2/bin/apxs表示告诉编译器通过apache的mod_php5模块来提供对php的解析. 同时php安装的最后一步make install时,我们会看到将动态链接库libphp5.so拷贝到apache2的安装目录的mod
-
php 获取可变函数参数的函数
func_num_args() 返回传递给该函数参数的个数 func_get_arg($arg_num) 取得指定位置的参数值,$arg_num位置index从0开始n-1. func_get_args() 返回包含所有参数的数组
-
JS与PHP向函数传递可变参数的区别实例代码
# JS 调用函数传递可变参数的方法 复制代码 代码如下: <script> function test() { for(var i = 0;i < arguments.length; i++) { alert(arguments[i]); } } //调用函数 test(1, 2, 3, 'abc'); </script> # PHP 调用函数传递可变参数的方法 复制代码 代码如下: <?php //方法一 //接收一系列参数,并逐一输出 function show_
-
WIN8.1下搭建PHP5.6环境
第一次接触php是在2014-5月份左右,当时是自己的主攻方向是C#,对php比较排斥, 其中很多一部分原因,就是PHP的断点调试一直无法配置成功,用echo打印日志的方式排错,使得自己对php心生怨恨,而错失了深入学习php的好机会.这次写这篇随笔,一方面是记录自己php方向的起航,另一方面也是希望能帮助刚接触php的初学者么,能够顺利的配置php的环境,而不至于对php产生恐惧. 一.系统环境简介 Windows系统是一个非常常见的系统.相信这里也不用多做解释.那么如何开启IIS(win8.
-
PHP5.6新增加的可变函数参数用法分析
本文实例讲述了PHP5.6新增加的可变函数参数用法.分享给大家供大家参考,具体如下: 今天无事,看了下PHP手册.发现PHP版本更新增加不少东西.下面就说说其中的PHP5.6更新中新增加的可变函数参数. 代码1: function sum(...$numbers) { $acc = 0; foreach( $numbers as $number ) { $acc += $number; } return $acc; } echo sum(1,2,3,4); 代码1结果: 10 代码1解析: 方法
-
php可变长参数处理函数详解
本文实例讲述了php可变长参数处理函数.分享给大家供大家参考,具体如下: 与C++一样,PHP中也可以对含有可变参数的函数进行处理,道理都一样,需要函数来专门处理参数列表.PHP中提供了三个相关的函数: 1. func_num_args() -- 返回传递给函数的参数个数 int func_num_args ( void ) 示例: function open_database($DB, $cache_size_or_values=null, $cache_size=null) { switc
-
Python函数中的可变长参数详解
一.Python函数中的参数 1.使用python的函数时,有参数类别,比如位置参数.关键字参数.可变长参数 2.位置参数.关键字参数很好理解,关键是可变长参数经常能见到,但是一直没有搞懂是什么意思 二.可变长参数 1.一个星号:函数可以接收任意个数的参数,只需要在形参前面加一个*(星号),一个星号形参的函数会把多个位置参数值当成元祖的形式传入,也就是传入的多个参数值可以在函数内部进行元祖遍历 def length_param(a, *args): print("a=", a) pri
-
关于java中可变长参数的定义及使用方法详解
JAVA中可以为方法定义可变长参数( Varargs)来匹配不确定数量的多个参数,其定义用"..."表示.其实,这类似于为方法传了一个数组,且在使用方法上也和数组相同,如下: public void test(String... str){ for(String s : str){ } } 调用方法就像普通的调用方式相同,只不过可以匹配的参数为0到多个.如下: test(); test("lilei"); test("lilei","h
-
Go语言中函数可变参数(Variadic Parameter)详解
目录 基本语法 示例一:函数中获取可变参数 示例二:将切片传给可变参数 示例三:多参数 基本语法 在Python中,在函数参数不确定数量的情况下,可以使用如下方式动态在函数内获取参数,args实质上是一个list,而kwargs是一个dict def myFun(*args, **kwargs): 在Go语言中,也有类似的实现方式,只不过Go中只能实现类似*args的数组方式,而无法实现**kwargs的方式.实现这种方式,其实也是利用数组的三个点表达方式,我们这里来回忆一下. 关于三个点(…)
-
C#可变参数params示例详解
目录 前言 示例 探究本质 扩展知识 总结 前言 前几天在群里看到群友写了一个基础框架,其中设计到关于同一个词语可以添加多个近义词的一个场景.当时群友的设计是类似字典的设计,直接添加k-v的操作,本人看到后思考了一下觉得使用c#中的params可以更优雅的实现一个key同时添加一个集合的操作,看起来会更优雅一点,这期间还有群友说道params和数组有啥区别的问题.本篇文章就来大致的说一下. 示例 params是c#的一个关键字,用用汉语来说的话叫可变参数,这里的可变,不是说的类型可变,而是指的个
-
shell 使用数组作为函数参数的方法(详解)
因工作需要,需要使用shell开发一些小工具,当使用数组作为函数参数时,发现只能传递数组的第一个元素,数组后面的元素不能传递到函数内. #!/bin/bash function showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done } regions=("GZ" "SH" "BJ") showArr $regions exit 0 把代码保存为test.sh后执行,只输出了第一个元素. ./t
-
Python中函数的参数传递与可变长参数介绍
1.Python中也有像C++一样的默认缺省函数 复制代码 代码如下: def foo(text,num=0): print text,num foo("asd") #asd 0 foo("def",100) #def 100 定义有默认参数的函数时,这些默认值参数 位置必须都在非默认值参数后面. 调用时提供默认值参数值时,使用提供的值,否则使用默认值. 2.Python可以根据参数名传参数 复制代码 代码如下: def foo(ip,port):
-
Python中函数参数匹配模型详解
当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 * 来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用 def f(*args): # 直接打印元组参数 print(args) print('-'*20) # 循环打印元组参数 [print(i) for i in args] ... # 传递一个参数 f(1) print('='*20) # 传递5个参数 f(1, 2, 3, 4, 5) 示例结果: (1,)
-
Python函数关键字参数及用法详解
目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应.而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便. 关键字参数是指使用形式参数的名字来确定输入的参数值.通过此方式指定函数实参时,不再需要与形参的位置完全一致,只要将参数名写正确即可. 因此,Python 函数的参数名应该具有更好的语义,这样程序可以立刻明确传入函数的每个参数的含义. 例如,在下面的程序中就使用到了关键字参数的形式给函数传参: def di
-
Java数组传递及可变参数操作实例详解
本文实例讲述了Java数组传递及可变参数操作.分享给大家供大家参考,具体如下: 方法可以操作传递和返回基本数据类型,但是方法中也可用来传递和返回数组.如果要向方法中传递一个数组,则方法的接收参数处必须是符合其类型的数组.而且数组属于引用数据类型,所以在把数组传递进方法之后,如果方法对数组本身做了任何修改,修改结果都是会保存下来的. 向方法中传递数组 在java中,所有对象都是通过引用进行操作的.而数组也是一种对象,当把数组作为参数传递给方法时,传递的实际上就是数组对象的引用.在方法中对数组的所有
随机推荐
- 利用正则表达式将字符串分组示例代码
- Android RichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- 详解Vue.js基于$.ajax获取数据并与组件的data绑定
- javascript 小时:分钟的正则表达式
- javascript使用中为什么10..toString()正常而10.toString()出错呢
- JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
- ASP.net Substitution 页面缓存而部分不缓存的实现方法
- 解析mysql left( right ) join使用on与where筛选的差异
- Android中实现根据资源名获取资源ID
- node.js不得不说的12点内容
- linux上TCP connection timeout问题解决办法
- 对Jquery中的ajax再封装,简化操作示例
- JSP 多个文件打包下载代码
- js的Boolean对象初始值示例
- EasyUI布局 高度自适应
- 基于JS模仿windows文件按名称排序效果
- Win 2003英文系统中玩转汉字
- LNMP添加、删除虚拟主机及伪静态使用教程
- 使用Java编写控制JDBC连接、执行及关闭的工具类
- C#实现的调用DOS命令操作类实例