|
函数
声明
function fun(参数1,参数...){函数体;return;}
因为没有命名空间的概念,所以函数不能重名。
php变量分不出是声明还是调用,全局变量在使用时和其它语言不一样,要在函数内部通过global把全局变量包含到函数中才能使用。
$a = 10;
$b = 30;
function test(){
global $a;
$a += 10;
echo $a;//20
$b += 10;
echo $b;//10,这儿做重新定义的局部变量处理
}
echo $a;//20
echo $b;//30
静态变量
php静态变量只能声明在函数(类)中,不能在全局声明,在变量声明前使用static关键字
作用:一个变量可以在同一个函数在多次调用中共用。
特点:静态变量在静态代码段中保存;一个函数多次调用之间共用,但只在第一次调用函数时声明到内存,以后再调用时就不再声明,而直接使用。
变量函数
如果一个变量后面有括号$fun=sum;//"sum" $fun();//将寻找与变量值
同名的函数sum();
形式类似多态特性,可用于回调。
在相同功能下一定先使用系统函数,可提高性能。
1.常规函数
bool copy (string source, string dest)
2.带有mixed的参数,mixed表示可以传任何类型的数据
bool chown (string flename,mixed user)
3.带&参数的函数,表示引用赋值,这个参数只能传一个变量(地址),函数中将改变原变量(引用地址的指向的变量)的值。
bool arsort (array &array [,int sort_flags])
4.默认函数 带有[]的函数,表示这个参数可选,如果调用时不传值则使用默认值。直接在函数声明时为参数默认值。参数列表中,必选参数在前,可选参数在后。
bool arsort (array &array [,int sort_flags])
例:
function demo($c,$a=1,$b=3){
echo $a." " .$b. " " .$c;
}
demo(3);//1 3 3
demo(3,5);//5 3 3
5.带有...的参数,...表示可以传任意多个参数
int array_unshift (array &array,mixed var [,mixed ...])
例:
function demo(){
$args = func_get_args();//所有方法内都可以用这方法得到所有参数数组,func_num_args()得到参数个数
$sum = 0;
for($i=0;$i<count($args);$i++){
$sum += $args[$i];
}
return $sum;
}
echo demo(1,2,3,4,5);//15
6.回调函数 带有callback,调用函数时需要传一个函数进来(函数名,函数名字符串)
array arry_filter(array input [,callback callbck])
例:
//积
function demo($x,$y){
return $x*$y;
}
//和
function test($x,$y){
return $x+$y;
}
//回调函数
function sum($a,$b,$fun){
return $a+$b+$fun($a,$b);
}
echo sum(2,3,demo);//11
echo sum(2,3,"test");//10
-------------------------------------------------------
$a = array(1,2,3,4,5,6,7,8,9);
print_r(array_filter($a,demo));//5,6,7,8,9
print_r(array_filter($a,demo2));//2,4,6,8
//>4
function demo($n){
if($n > 4)
return true;
else
return false;
}
//偶数
function demo2($n){
if($n % 2 == 0)
return true;
else
return false;
}
内部函数
php可以在函数内部再声明函数,目的就是在函数内部调用,用来帮助外部函数完成一些子功能的。函数中还是不能直接调用外部函数的变量。
重用函数(使用自己定义的函数库)
系统指令,两种格式,1,xxxx"xx";2,xxxx("xx");
被包含的php文件,命名尽量用xxx.inc.php
require用于静态包含
include(文件名);用于动态包含//include"文件名";
require_once,只包含一次
include_once,只包含一次 |
|
|