PHP函数按引用传递参数及函数可选参数用法示例

yipeiwu_com6年前PHP代码库

本文实例讲述了PHP函数按引用传递参数及函数可选参数用法。分享给大家供大家参考,具体如下:

一、函数按引用传递参数

1. 代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>按引用传递方式</title>
</head>
<body>
<?php
function example( &$m ) //定义一个函数,同时传递参数$m的变量
{
  $m = $m * 5 + 10;
  echo "在函数内:\$m = ".$m;    //输出形参的值
}
$m = 1;
example( $m ) ;           //传值:将$m的值传递给形参$m
echo "<p>在函数外:\$m = $m <p>" ;  //实参的值发生变化,输出m=15
?>
</body>
</html>

2. 运行结果

在函数内:$m = 15
在函数外:$m = 15

3. 注意事项

按引用传递时,需要注意在函数的参数列表中比按值传递多一个&。

二、函数的可选参数

1. 代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=gb2312"/>
<title>默认参数的应用</title>
</head>
<body>
<?php
function values($price,$tax=""){//定义一个函数,其中的一个参数初始值为空
$price=$price+($price*$tax);//声明一个变量$price,等于两个参数的运算结果
echo "价格:$price<br>";//输出价格
}
values(100,0.25);//为可选参数赋值0.25
values(100);//没有给可选参数赋值
?>
</body>
</html>

2. 运行结果

价格:125
价格:100

3. 注意事项

① 可选参数放在参数列表末尾,并且指定其默认值为空。
② 当使用默认参数时,默认参数必须放在非默认参数的右侧,否则函数可能出错。
③ 从PHP5开始,默认也可以通过引用传递。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP数组(Array)操作技巧大全

希望本文所述对大家PHP程序设计有所帮助。

相关文章

分析PHP中单双引号的误区和双引号小隐患

分析PHP中单双引号的误区和双引号小隐患

许多程序员以为在PHP中单引号和双引号是一样的,其实这要看怎么用法,在有些方面它们确实是一样,但有一些方面它们也有着很大的区别,今天小编就来为您说说有哪些区别。 1、一般情况下两者是通...

php.ini save_handler 修改不生效的解决办法

php5.3.3以前php-fpm还没有被php收录,配置php基本都在php.ini里面,php5.3.3及以后,除了在php.ini配置以外,还可以在php-fpm.conf里面配置...

php设计模式 Facade(外观模式)

php设计模式 Facade(外观模式)

模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得...

国外比较好的几个的Php开源建站平台小结

博客:WordPress WordPress是使用PHP开发的著名博客平台,免费开源,功能强大,不仅仅用于博客搭建,还可以广泛应用于各类网络信息发布平台。 论坛:phpBB phpBB是...

解析thinkphp中的M()与D()方法的区别

D()和M()方法的区别:D和M的区别主要在于M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现而D方法必须有创建模型类。我...