函数是一种可以在任何被需要的时候执行的代码块
函数的定义
1.函数是一个被命名的独立的代码段
2.它执行特殊的任务
3.并可以给调用它的程序返回值
函数的优点:
1.提高程序的重用性
2.提高程序的可维护性
3.可以提高软件的开发效率
4.提高软件的可靠性
5.控制程序的复杂性
创建 PHP 函数:
1.所有的函数都使用关键词 "function()" 来开始
2.命名函数 - 函数的名称应该提示出它的功能。函数名称以字母或下划线开头。
3.添加 "{" - 开口的花括号之后的部分是函数的代码。
4.插入函数代码
5.添加一个 "}" - 函数通过关闭花括号来结束。
function 函数名(){
}
function 函数名(参数1,参数2.........){
}
一.函数必须调用才能执行,可以在声明之前调用,也可以在声明之后调用
二.函数名命名和变量一样
三.函数在声明时不能重名
四.可以通过向函数传递参数,改变函数的行为
形参:就在声明函数时,声明的参数,参数就是变量,多个参数用逗号分开
实参:调用函数时传给形参数值(数据,也可以是变量)
五.如果没有返回值则称为过程
六.通过使用return语句返回数据
七.函数执行return语句就结束,所以不要在这个语句后写代码
1 <?php 2 function table($n,$m,$width){ 3 echo ‘<table border="1" width="‘.$width.‘" align="center">‘; 4 echo ‘<caption><h1>表名</h1></caption>‘; 5 for($i=0;$i<$n;$i++){ 6 if($i%2==0){ 7 $bg="#ffffff"; 8 }else{ 9 $bg="#cccccc"; 10 } 11 echo ‘<tr bgColor="‘.$bg.‘">‘; 12 for($j=0;$j<$m;$j++){ 13 echo ‘<td align="center">‘.($i*$m+$j).‘</td>‘; 14 } 15 echo ‘</tr>‘; 16 } 17 } 18 19 table(10,10,600); 20 table(5,5,300); 21 table(2,2,100); 22 ?>
PHP的变量的范围
局部变量:在函数中声明的变量就是局部变量,只能在自己的函数内部使用。
全局变量:在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可以使用。
PHP的变量分不出是声明还是使用
在PHP中使用全局变量要通过global关键字将这个全局变量包括到函数中才能使用到。
参数就是局部变量,这个局部变量可以调用时去赋值
1 <?php 2 //全局变量 3 $a=10; 4 function demo(){ 5 //局部变量b 6 $b=5; 7 //通过global关键字将这个全局变量包括到函数中 8 global $a; 9 $a+=10; 10 echo $a."demo<br>"; 11 echo "b=".$b."<br>"; 12 } 13 14 function test(){ 15 //因为PHP的变量分不出是声明还是使用,所以这是声明变量$a=5 16 $a+=5; 17 echo $a."test<br>"; 18 } 19 20 echo $a."----<br>"; 21 demo(); 22 echo $a."!!!!<br>"; 23 test(); 24 echo $a."####<br>"; 25 ?>
PHP的静态变量
静态变量只能声明在函数中(类中),不能在全局声明。
使用static在变量前。
作用:一个变量可以在同一个函数在多次调用中同用。
1.静态变量在静态代码段中保存。
2.一个函数多次调用之间共用,但只在第一次调用函数时声明到内存,以后再调用,就不再声明,而是直接使用。
1 <?php 2 function test(){ 3 //声明变量a为静态变量 4 static $a=0; 5 $b=0; 6 7 $a++; 8 $b++; 9 10 echo "a=".$a."<br>"; 11 echo "b=".$b."<br>"; 12 } 13 14 test(); 15 test(); 16 test(); 17 ?>
变量函数(可变函数):如果一个变量后面有圆括号,PHP就将寻找与变量值同名的函数,并且将尝试执行它。这样就可以将不同的函数名称赋给同一个变量,赋给变量哪个函数名,在程序中使用变量名并在后面加上圆括号时,就调用哪个函数执行。
1 <?php 2 //声明第一个函数one,计算两个数的和,需要两个整型参数,返回计算后的值 3 function one($a,$b){ 4 return $a+$b; 5 } 6 7 //声明第二个函数two,计算两个数的平方和,需要两个整型参数,返回计算后的值 8 function two($a,$b){ 9 return $a*$a+$b*$b; 10 } 11 12 //声明第三个函数three,计算两个数的立方和,需要两个整型参数,返回计算后的值。 13 function three($a,$b){ 14 return $a*$a*$a+$b*$b*$b; 15 } 16 17 //将函数名‘one’赋值给$result,执行$result()时则调用函数one() 18 $result="one"; 19 echo "和为:".$result(3,4)."<br>"; 20 21 //将函数名‘two’赋值给$result,执行$result()时则调用函数two() 22 $result="two"; 23 echo "平方和为:".$result(3,4)."<br>"; 24 25 //将函数名‘three’赋值给$result,执行$result()时则调用函数three() 26 $result="three"; 27 echo "立方和为:".$result(3,4)."<br>"; 28 ?>
内部函数: PHP可以在函数内部再声明函数。
目的就是在函数的内部调用
就是用来帮助外部函数完成一些子功能的
1 <?php 2 function score($php,$java,$net){ 3 //声明内部函数 4 function php($php){ 5 if($php>60) 6 return "及格"; 7 else 8 return "不及格"; 9 } 10 11 function java($java){ 12 if($java>60) 13 return "及格"; 14 else 15 return "不及格"; 16 } 17 18 function net($net){ 19 if($net>60) 20 return "及格"; 21 else 22 return "不及格"; 23 } 24 25 $total=$php+$java+$net; 26 27 $agv=$total/3; 28 29 echo "你的php成绩是{$php}分".php($php)."<br>"; 30 echo "你的java成绩是{$java}分".php($java)."<br>"; 31 echo "你的net成绩是{$net}分".php($net)."<br>"; 32 33 echo "你的总成绩为:{$total}<br>"; 34 echo "你的平均成绩为:{$agv}<br>"; 35 } 36 37 score(50,90,70); 38 ?>
递归函数:就是在自己内部调用自己的函数名
1 <?php 2 function demo($num){ 3 echo $num."<br>"; 4 5 if($num>0) 6 demo($num-1); 7 else 8 echo "------------<br>"; 9 10 echo $num."<br>"; 11 } 12 13 demo(5); 14 ?>
重用函数:使用自己定义的函数库
require:用于静态包含
include:用于动态包含
require_once
include_once
include(文件名);
include"文件名";
1 <?php 2 //include_once和require_once只包含一次 3 include_once "test.txt"; 4 include_once "test.txt"; 5 include_once "test.txt"; 6 7 require "demo.txt"; 8 9 include_once "test.inc.php"; 10 echo "{$a}<br>"; 11 test(); 12 ?>
test.inc.php
1 <?php 2 $a=10; 3 function test(){ 4 echo "########<br>"; 5 } 6 ?>
test.txt
aaaaaa<br>
bbbbbb<br>
cccccc<br>
demo.txt
11111<br>
22222<br>
33333<br>
一些系统含糊的使用
资源=opendir("目录名") //打开目录
readdir(资源) //读取目录
//判断是不是文件
is_dir(文件)
1 <?php 2 function totaldir($dirname,&$dirnum,&$filenum){ 3 $dir=opendir($dirname); 4 readdir($dir)."<br>"; //读出 . 本文件 5 readdir($dir)."<br>"; //读出 .. 上一级文件 6 while($filename=readdir($dir)){ 7 //设为本这个目录下的文件 8 $newfile=$dirname."/".$filename; 9 10 //判断是否是目录 11 if(is_dir($newfile)){ 12 //递归调用查看所有的文件目录 13 totaldir($newfile,$dirnum,$filenum); 14 $dirnum++; 15 }else{ 16 $filenum++; 17 } 18 } 19 20 closedir($dir); 21 } 22 23 $dirnum=0; 24 $filenum=0; 25 totaldir("D:/APMServ5.2.6/www/phpMyAdmin",$dirnum,$filenum); 26 27 echo "目录总数:".$dirnum."<br>"; 28 echo "文件总数:".$filenum."<br>"; 29 ?>