在PHP的函数中,参数传递可以分为值传递和引用传递(也称为地址传递)两种。

默认情况下,PHP是按值传递参数的。值传递参数调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称为形参)。值传递的特点是实参与行参分别存储在内存中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。

引用传递(按地址传递)的特点是实参与行参共享一块内存。因此,当形参的值改变的时候,实参的值也会相应的做出改变。从这种角度上说,可以认为形参合实参是同一个变量。

定义引用传递参数时,可以在参数前面加上引用符号&。

function printString(&$string){

echo($string);

$string="打印完成";

}

$str="测试字符!n";

printString($str);

echo($str);

?>

// 程序输出:测试字符! 打印完成

php还支持可变长度的参数列表。在定义函数时,不指定参数。在调用函数时,可以根据需要指定参数的数量,通过与参数相关的几个系统函数获取参数信息。具体说明为:

function mysum()

{

$num = func_num_args();

echo("函数包含:".$num."个参数n");

$sum = 0;

for($i=0; $i < $num; $i++)

{

$sum = $sum + func_get_arg($i);

}

echo("参数累加纸盒为:".$sum);

}

mysum(1,2,3,4);

?>

// 程序输出:函数包含:4个参数 参数累加纸盒为:10

func_num_args函数功能:返回传递到函数的参数数目,其语法如下 : int func_num_args (void )。说明 : 返回传递到目前定义函数的参数数目。如果是从函数定义的外面来呼叫此函数,则func_get_arg( )将会产生警告。

func_num_args( )可以用来结合func_get_arg( )和func_get_args( )来允许使用者定义的函式接受variable-length参数列表。其中,func_get_arg( )从参数列表返回项目,其语法:int func_get_arg (int arg_num),传回定义函数的参数列表的第arg_num个参数,其参数从0开始。且函数定义的外面来呼叫此函数会产生警告;并且当arg_num大于函数实际传递的参数数目时亦会产生警告并返回FALSE。

func_get_args()函数和func_get_arg()函数的区别在于,func_get_args()函数传回一数组,数组的各个元素相当于是目前使用者定义函式的参数列的数目。

在我们构建PHP类的时候,灵活使用这三个函数,可以起到非常理想的效果,例如外面在创建PHP和MYSQL链接的类时,可以书写如下代码:

class mydb {

private $user;

private $pass;

private $host;

private $db;

public function __construct(){

$num_args=func_num_args();

if($num_args>0){

$args=func_get_args();

$this->host=$args[0];

$this->user=$args[1];

$this->pass=$args[2];

$this->connect();

}

}

}

?>

再给出一个示例程序:

function foo() {

$numargs = func_num_args();

echo "Number of arguments: $numargs
n";

if ($numargs >= 2) {

echo "Second argument is: " . func_get_arg (1) . "
n";

}

$arg_list = func_get_args();

for ($i = 0; $i < $numargs; $i++) {

echo "Argument $i is: " . $arg_list[$i] . "
n";

}

}

foo (1, 2, 3);

?>

php 接收传值_PHP在函数体中传递与接收参数相关推荐

  1. PHP在函数体中传递与接收参数

    在PHP的函数中,参数传递可以分为值传递和引用传递(也称为地址传递)两种. 默认情况下,PHP是按值传递参数的.值传递参数调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称为形参). ...

  2. mybatis添加方法可以传map吗_Mybatis中传递多个参数的4种方法总结

    前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种 ...

  3. php 接收传值_php接受post传值的方法

    这段时间在研究php的接口,利用jmeter模拟发送数据给php服务器,看php如何接收post传输过去的数据,遇到了几个问题,经过一番度娘之后终于有所理解,记录一下: 这里记录常用的两种post方式 ...

  4. php soap传值,在SOAP调用中传递PHP数组

    所以我试图在我的SOAP请求中包含以下XML: someint someint someint someint 我查看了this的帖子,这个帖子含糊不清,但它产生的输出如下: object(stdCl ...

  5. java ajax data_jquery ajax 方法中传递的data参数,如何在java类中获取

    展开全部 var params="username="+"1"; $.ajax({ type : "POST", //数据发送方式 url ...

  6. 从对话框中传递参数到视图类

    原文地址:从对话框中传递参数到视图类作者:多彩 这个看似简单的问题确实让我郁闷了好几天,但想出来居然只用了一分钟不到.看来还是很有纪念价值的. 假设在视图类的一个需要传递参数的函数中定义对话框的对象 ...

  7. 在 mapper 中如何传递多个参数?

    1.第一种: DAO 层的函数 public UserselectUser(String name,String area); 对应的 xml,#{0}代表接收的是 dao 层中的第一个参数,#{1} ...

  8. java 接收命令行参数_java中的命令行参数_Java中的命令行参数

    java中的命令行参数 Command-line arguments in Java are used to pass arguments to the main program. If you lo ...

  9. java中的命令行参数_Java中的命令行参数

    java中的命令行参数 Command-line arguments in Java are used to pass arguments to the main program. If you lo ...

最新文章

  1. subplot subplots绘制子图
  2. Android WebView 性能优化
  3. configSections
  4. linux环境编程 学习,学习linux环境高级编程首先学习的是文件的操作。因为有.pdf...
  5. linux学习网站分享
  6. Jackson第一篇【JSON字符串、实体之间的相互转换】
  7. 垂直型电商的投资魔法
  8. 翻转子串(important!)
  9. cad图框尺寸标准图_基于AutoCAD2020的动态图框制作与图纸比例问题
  10. Thingsboard 3.1.0 - UI修改
  11. 打造自己的U盘工具箱
  12. 手机app登录显示服务器异常,手机app 连接云服务器异常
  13. 让xp3 iis5.1支持40个连接数
  14. ab服务器网页,使用ab进行web服务器压测详解
  15. 基于GLBP协议的医院网络规划与设计 文档+申请表+任务书+开题报告+中期检查+文献综述+PPT+周进展+网络拓扑及配置
  16. 移动端UI设计尺寸规范以及iPhone尺寸大小
  17. 决策树算法--ID3算法
  18. 汽车之家论坛字体反爬
  19. 硬盘分区总结(小东子)
  20. HE网站系统架设过程思路

热门文章

  1. 七月最后一波!微软专属内推码等你来抢
  2. 如何用 RFM 模型扒出 B 站优质 UP 主?| 附实战代码
  3. 哟,2020 年了,用 Vue 做一个自己的小程序吧!| 原力计划
  4. 中国开源产品如何走向世界?
  5. 支付宝解释 2019 年账单总额较高;腾讯 QQ 回应新功能可显示对方实时电量;Python 2.7 结束支持 | 极客头条...
  6. 亲测,终于知道为什么这本 Python 书销量超过13W+!
  7. Amazon 首席科学家李沐亲授「深度学习」,2019 AI ProCon震撼来袭!(日程出炉)...
  8. 从佛罗伦萨记账到区块链,应用才是区块链崛起的真正标志
  9. 2018 年,JavaScript 都经历了什么?
  10. 为什么今日头条、网易新闻都突然被强制下架了?