php 接收传值_PHP在函数体中传递与接收参数
在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在函数体中传递与接收参数相关推荐
- PHP在函数体中传递与接收参数
在PHP的函数中,参数传递可以分为值传递和引用传递(也称为地址传递)两种. 默认情况下,PHP是按值传递参数的.值传递参数调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称为形参). ...
- mybatis添加方法可以传map吗_Mybatis中传递多个参数的4种方法总结
前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种 ...
- php 接收传值_php接受post传值的方法
这段时间在研究php的接口,利用jmeter模拟发送数据给php服务器,看php如何接收post传输过去的数据,遇到了几个问题,经过一番度娘之后终于有所理解,记录一下: 这里记录常用的两种post方式 ...
- php soap传值,在SOAP调用中传递PHP数组
所以我试图在我的SOAP请求中包含以下XML: someint someint someint someint 我查看了this的帖子,这个帖子含糊不清,但它产生的输出如下: object(stdCl ...
- java ajax data_jquery ajax 方法中传递的data参数,如何在java类中获取
展开全部 var params="username="+"1"; $.ajax({ type : "POST", //数据发送方式 url ...
- 从对话框中传递参数到视图类
原文地址:从对话框中传递参数到视图类作者:多彩 这个看似简单的问题确实让我郁闷了好几天,但想出来居然只用了一分钟不到.看来还是很有纪念价值的. 假设在视图类的一个需要传递参数的函数中定义对话框的对象 ...
- 在 mapper 中如何传递多个参数?
1.第一种: DAO 层的函数 public UserselectUser(String name,String area); 对应的 xml,#{0}代表接收的是 dao 层中的第一个参数,#{1} ...
- java 接收命令行参数_java中的命令行参数_Java中的命令行参数
java中的命令行参数 Command-line arguments in Java are used to pass arguments to the main program. If you lo ...
- java中的命令行参数_Java中的命令行参数
java中的命令行参数 Command-line arguments in Java are used to pass arguments to the main program. If you lo ...
最新文章
- subplot subplots绘制子图
- Android WebView 性能优化
- configSections
- linux环境编程 学习,学习linux环境高级编程首先学习的是文件的操作。因为有.pdf...
- linux学习网站分享
- Jackson第一篇【JSON字符串、实体之间的相互转换】
- 垂直型电商的投资魔法
- 翻转子串(important!)
- cad图框尺寸标准图_基于AutoCAD2020的动态图框制作与图纸比例问题
- Thingsboard 3.1.0 - UI修改
- 打造自己的U盘工具箱
- 手机app登录显示服务器异常,手机app 连接云服务器异常
- 让xp3 iis5.1支持40个连接数
- ab服务器网页,使用ab进行web服务器压测详解
- 基于GLBP协议的医院网络规划与设计 文档+申请表+任务书+开题报告+中期检查+文献综述+PPT+周进展+网络拓扑及配置
- 移动端UI设计尺寸规范以及iPhone尺寸大小
- 决策树算法--ID3算法
- 汽车之家论坛字体反爬
- 硬盘分区总结(小东子)
- HE网站系统架设过程思路
热门文章
- 七月最后一波!微软专属内推码等你来抢
- 如何用 RFM 模型扒出 B 站优质 UP 主?| 附实战代码
- 哟,2020 年了,用 Vue 做一个自己的小程序吧!| 原力计划
- 中国开源产品如何走向世界?
- 支付宝解释 2019 年账单总额较高;腾讯 QQ 回应新功能可显示对方实时电量;Python 2.7 结束支持 | 极客头条...
- 亲测,终于知道为什么这本 Python 书销量超过13W+!
- Amazon 首席科学家李沐亲授「深度学习」,2019 AI ProCon震撼来袭!(日程出炉)...
- 从佛罗伦萨记账到区块链,应用才是区块链崛起的真正标志
- 2018 年,JavaScript 都经历了什么?
- 为什么今日头条、网易新闻都突然被强制下架了?