php变量的范围
局部变量:在函数中声明的变量就是局部变量,只能在这家的函数内部使用。
全局变量:在函数外声明,在变量声明后,只到整个脚本结算前都可以使用,包括在函数中和{}中都可以使用
php的变量分不出是声明还是使用,在php中使用全局变量要通过global关键字将这个全局变量包含到函数中才能使用到,在global之后才是使用全局的变量
参数就是局部变量,这个局部变量可以在电泳是去赋值
php的静态变量
静态变量值能声明在函数中(类中),不能在全局声明,使用static在变量前;
作用:一个变量可以在通一个函数多次调用中同用。
- 静态变量在静态代码中保存
- 一个函数多次电泳更直间共用,但只能在第一次调用函数是声明到内存,以后在调用就不再声明,而直接使用变量函数
变量函数
如果一个变量后面有点扣好$var=test; $var();就讲寻找与变量值相同名的函数test();
$var = test; function test($a,$b){ return $a+$b; } echo "结果".$var(2,4)."<br>";
函数类型
php提供2000多个函数,都属于系统函数,都可以通过名称直接使用。一定用先使用系统函数,如果系统函数没有你想要的功能,在去直接定义函数。
1.常规函数
bool copy(string source,string dest)
2.带有mixed,mixed表示可以传任何类型的值
bool chown (string filename,mixed user)
3.带有&参数的函数,表示引用赋值,这个参数不能传值,然后函数将变量的值改变,我们在使用这个变量时,值也是变化的
bool arsort(array &array[,int sort_flags ])
4.带有【】的函数,表这个值是可选的,如果你传值了就使用你传的值,如果你没有传值则使用默认值,默认值直接在函数声明的时候赋值,可选值必须从后向前设置
bool arsort (array &array [, int sort_flags])
function demo($a,$b=10,$c=30){ echo "$a $b $c" } demo(8);
5.带有...的参数函数,...表示可以穿任何多个参数
int array_unshift(array &array,mixed var [,mixed ...])
function demo(){ $args = func_get_args();//获取参数的数组 ,返回的是数组个数 $sum = 0; for ($i=0; $i < count($args); $i++) { //count 可以直接使用 func_get_args $sum+=$args[$i];//args可以替换成func_get_arg } return $sum; } echo demo(1,3,5,7,8);
6.回调函数 带有callback,就是滴啊用这个函数时,需要我们传一个函数进来(函数名,函数名字串)
array array-filter(array input [,callback callback])
function huidiao($a,$b,$fun){ return $a+$b+$fun($a,$b); } function fun($a,$b){ return $a*$b; } echo "回调函数===".huidiao(2,3,fun)."<br>";
函数的使用
1.内部函数:php可以在函数内部再声明函数目的就是在函数内部调用,就是用来帮助外部函数完成一些子功能的
2.递归函数:就是在自己内部调用自己的函数名
function total($dirname,&$dirnum,&$filenum){ $dir = opendir($dirname);//获取目录文件对象 readdir($dir);//读目录下的第一个文件 readdir($dir); while ($filename=readdir($dir)) { echo $filename."<br>"; $newFile = $dirname."/".$filename; if (is_dir($newFile)) {//判断是否是目录 total($newFile,$dirnum,$filenum); $dirnum++; }else{ $filenum++; } } closedir($dir);//关闭目录 } $dirnum=0; $filenum=0; total("/Users/luoyaosheng/Sites",$dirnum,$filenum); echo "目录数为:$dirnum 文件数:$filenum";
3.重用函数:使用自己定义的函数库,可以包含 html,text,php文件
require :用于静态包含
include :用于动态包含
require_once :加once的包含 即使包含了多次文件都只算一次,防止报错。正常都是使用不加once
include_once