(1)函数的定义和应用
function 函数名(参数1,参数2,参数3......)
{
函数体
return 返回值
}
<?php
table(3,8,"学生成绩表","red","green");
function table($row,$col, $tablename, $bgcolor1,$bgcolor2)
{
echo "<table border=1 width=800>";
echo"<caption><h1>".$tablename."</h1></caption>";
$i=0;
$k=0;
while($i<$row){
if($i%2==0)
$bgc=$bgcolor1;
else
$bgc=$bgcolor2;
echo "<tr bgcolor=‘".$bgc."‘>";
$j=0;
while($j<$col)
{
echo "<td>".$k++."</td>";
$j++;
}
echo "</tr>";
$i++;
}
echo"</table>";
}
table(5,2,"学生信息表","yellow","bule");
table(8,12,"学生表","#f00ff","#ffffaa");
?>
显示出三个表(学生成绩表,学生信息表,学生表)
(2)函数局部变量
函数体结束、变量释放
<?php
function fun1()
{
$a=100;
echo $a;
}
function fun2()
{
$b=200;
echo $b;
}
fun1();
fun2();
?>
显示:
100
200
(3)函数的全局变量
<?php
$a=200;
$b=500;
function fun1()
{
echo $GLOBALS["a"];
}
function fun2()
{
global $b;
echo $b;
}
fun1();
fun2();
?>
显示:
200
500
(4)函数的静态变量
静态变量用在累加
<?php
function test()
{
static $a=0; //静态变量
echo $a."<br>";
$a++;
}
test();
test();
test();
?>
显示:
0
1
2
function_exists();判断函数是否存在
<?php
function test()
{
static $a=0;
$a++;
}
test();
if(function_exists("test1")){
echo"test1 is exists";
}else{
echo"test1 is not exists";
}?>
显示:test1 is exists
函数参数传递
<?php
function fun1($a=1, $b=2, $c=3, $d=4, $e=5)
{
echo $a."<br>";
echo $b."<br>";
echo $c."<br>";
echo $d."<br>";
echo $e."<br>";
}
fun1(a,b,c,d);
?>
显示:a b c d 5
func_get_args(); //获取方法中参数的数组
<?php
function fun($a)
{
$args=func_get_args(); //获取方法中参数的数组
echo count($args);
echo "<br>";
echo $args[4];
}
fun(1,2,3,5,688);
?>
显示为:5 688
(5)变量函数
<?php
function test()
{
echo "#######<br>";
}
$a=test;
$a();
?>//变量函数
显示:#######
(6)递归函数
<?php
function demo($a){
echo "#####".$a."<br>";
if($a>0)
demo(--$a);
}
demo(3);
?>//递归函数
显示为:
#####3
#####2
#####1
#####0
<?php
function demo($a){
if($a > 1){
$r=$a*demo($a-1);
}else {
$r=$a;
}
return $r;
}
echo demo(4);
?>递归调用
4x3x2x1=24
function fun($a){
echo$a."<br>";
if($a>0){
fun($a-1);
}else{
echo"-------<br>";
}
echo$a."<br>";
}
fun(4);
显示:
4
3
2
1
0
-------
0
1
2
3
4
(7)回调函数
函数当作参数传递
function fnCallBack( $msg1 , $msg2 )
{
echo ‘msg1:‘.$msg1;
echo "<br />\n";
echo ‘msg2:‘.$msg2;
}
$fnName = "fnCallBack";
$params = array( ‘hello‘ , ‘world‘ );
call_user_func_array( $fnName , $params );
显示为:
msg1:hello
msg2:world
$arr = array(1,5,7);
Function mycon($a,$b){
If($a>$b){
Return1;
}elseif($a<$b){
Return -1;
}else{
Return 0;
}
}
Usort($arr,”mycon”);
Print_r($arr);
(8)内部函数
<?php
function demo($php,$java,$oracle){
function php($php){
if($php >=60 && $php<=100){
return "php成绩及格";
}else{
return "php成绩不及格";
}
}
function java($java){
if($java >=60 && $java<=100){
return "java成绩及格";
}else{
return "java成绩不及格";
}
}
function oracle($oracle){
if($oracle >=60 && $oracle<=100){
return "oracle成绩及格";
}else
{
return "oracle成绩不及格";
}
}
echo php($php)."<br>";
echo java($java)."<br>";
echooracle($oracle)."<br>";
$total=$php+$oracle+$java;
$anv=$total/3;
echo "你的总成绩是".$total."<br>";
echo "你的平均成绩是".$anv."<br>";
}
demo(10,80,70);
?>
显示为:
php成绩不及格
java成绩及格
oracle成绩及格
你的总成绩是160
你的平均成绩是53.3333333333
(9)加载自定义函数库
Include() 速度快脚本执行包含时、当处理失败时、会产生一个警告、
Require() 会导致一个致命错误
require()将一个文件在预处理期间被导入、像把该文件粘贴到使用函数的地方
include_once require_once这二个函数如果被包含了。只会被包含一次、不会重复
(10)匿名函数
<?php
$greet = function($name){
printf("Hello %s\r\n", $name);
};
$greet(‘World‘);
$greet(‘PHP‘);
(11)php引用参数的函数
只有在内存变量中才有地址、有引用关系的二个变量、一个变、另一个就变、
如果在函数说明中、有&出现、说明这个 参数是一个引用参数、调用时传参数时、就必须传一个变量
$b= 20;
functiondemo(&$a){
$a=100;
}
echo$b."<br>";
demo($b);
echo$b."<br>";
显示为:
20
100