炫浪网络社区

 找回密码
 注册
搜索
查看: 2119|回复: 3
打印 上一主题 下一主题

PHP基础教程之函数篇

[复制链接]

244

主题

0

好友

480

积分

该用户从未签到

跳转到指定楼层
楼主
发表于 2007-11-8 10:11 |只看该作者 |倒序浏览
1.1 什么是函数呢?
将一些重复的过程嵌入在一个命名的代码块中,然后在必要的时候调用这个名.这个代码块称为函数(function);
2.1.1创建函数:
php提供了一个预定义的语法模式来定义一个函数,如下:
function function_name(paramenters){ function-body }
例如下面的函数:
function footer(){ echo "<p><a href=\"http://www.phpno.com\">新疆PHPer交流论坛</a></p>"; }
这样定义后可以在任何地方调用:
<?php footer(); ?>
2.1.2 按值传递参数:
向函数传递数据是常用的功能.例如要比较两个数的大小:
function Max($a,$b){ $max=$a>$b?$a:$b; //这里用到一个三元运算,即当$a>$b时,$max=$a,否则$max=$b } 在这里函数接受了两个参数,$a和$b,可以这样调用函数:
Max(6,8);
也可以向函数传递变量:
2.1.2-L1
<?php $a=6; $b=8; Max($a,$b); ?> 这中方式称为按值传递或者传值(passing by value),这样的话,函数范围内对这些值的任何改变都在函数外部被忽落掉.
表面风光,内心彷徨,容颜未老,心已沧桑。成就难有,郁闷经常。比骡子累,比蚂蚁忙。
回复

使用道具 举报

244

主题

0

好友

480

积分

该用户从未签到

沙发
发表于 2007-11-8 10:12 |只看该作者

回复:PHP基础教程之函数篇

2.1.3 按引用传递参数:

这种方式区别与2.1.2的方式,它可以让函数内部对参数的改变在外部得到体现,按引用传递参数(也称传引用)要在参数前面加上&amp;符号.
例2.1.3-L1
<?php $a=2006; $b=2007; function cont(&amp;$a,$b){ $a+=$b; $b+=$a; } cont($a,$b); echo "a:".$a."<br/>"; echo "b:".$b."<br/>"; ?>

输出的应该是:
a的值是:4013
b的值是:2007
此时$a已经变为4013,而b并没有变化.

2.1.4 默认参数值:

给函数的参数设置一个默认值后,如果在没有提供这个参数的时候,函数就会把这个默认值赋值给该参数.

<?php $a=2007; function cont($a,$b=2006){ echo $b; } cont($a); ?> 输出为:2006
给定参数默认值的时候,注意必须是常数表达式,而不能指定函数调用或变量等非常量值.

2.1.5 可选参数:

你也可以设置某参数为可选(optional)参数,不过这个参数要放在参数列的最后一位,并且要设置默认值为空:

function sum($a,$b,$c=''){ $sum=$a+$b+$c; echo $sum; } 如果你有多个参数的时候,也可以选择性的传递参数:

function sum($a,$b='',$c=''){ echo $a+$b+$c; }

调用sum的时候可以只传递$a和$c:

sum(2046,'',2008);

2.1.6 从函数返回值

一般情况下,脚本的结果可能取决与函数的结果,也可能取决与在执行函数时对数据的修行,而由于变量作用域的差异,函数体无法很容易的将信息传递给调用者,这个时候就可以通过
return关键字向调用者传递数据.

1.return()
return()语句可以向函数调用者返回任意的数值,将程序控制权返回到调用者的作用域.如果return()在全局作用域内调用,将终止脚本的执行.
返回刚才的sum()函数,计算的结果暂时不能显示给用户,而是将这个值返回给调用块:

function sum($a,$b,$c=''){ $sum=$a+$b+$c; return $sum; } 也可以不需要赋值给$sum:
function sum($a,$b,$c=''){ return $a+$b+$c; }

2.返回多个值

这里以构造函数list()为例说明返回多个值:
例:2.1.6-L1

<?php function getmicrotime(){ return explode(" ",microtime()); } list($msec, $sec)=getmicrotime(); echo $msec."<br/>"; echo $sec."<br/>"; ?> 注解: micrtime()函数是返回当前 UNIX 时间戳和微秒数,返回格式为“msec sec”的字符串,其中 sec 是当前的 Unix 时间戳,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
explode()是使用一个字符串分割另一个字符串,这里用来分割micrtime()得到的两个值组成的一个字符串.

调用getmicrotime()函数后,此时返回的是两个值,$msec和$sec;
这个函数可以丰富一下用来做检测程序运行时间

<?php function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); //注意这里只是返回一个两个数值的和 } $time_start = getmicrotime(); for($i=0;$i<1000;$i++){ echo $i; } $time_end = getmicrotime(); echo "\n\n[执行时间: " . ($time_end - $time_start) . "秒]\n\n"; ?>
表面风光,内心彷徨,容颜未老,心已沧桑。成就难有,郁闷经常。比骡子累,比蚂蚁忙。
回复

使用道具 举报

0

主题

0

好友

12

积分

该用户从未签到

3
发表于 2016-5-3 18:13 |只看该作者
回复

使用道具 举报

0

主题

0

好友

51

积分

  • TA的每日心情
    开心
    2017-5-22 13:19
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4
    发表于 2017-5-15 00:27 来自手机 |只看该作者
    正准备学php
    回复

    使用道具 举报

    
    回顶部