php中的函数
2018-08-07 本文已影响0人
乔乔_老师
一、函数
一部分可重复执行的代码段,多次执行,一次编译
特点:
1.减少程序运行的复杂性
2.提高程序的可靠性
3.提高函数的开发效率
4.提高程序的维护性
5.提高程序的重复性
语法
1.带参数的函数
function fun(参数1,参数2){
}
function sayName($name,$age,$city){
echo "你的名字:<span style='color:#f00 '></span>".$name.',你的年龄:'.$age.'你所在的城市:'.$city;
}
sayName('张三',18,'北京');
带返回值的函数
2.带返回值的函数
function fun(参数1,参数2){
return
}
检测函数是否存在:
function_exists(函数名);
function fun($a,$b){
return $a+$b;
}
echo fun(3,5);
检测一个函数是否存在
function_exists(‘函数名’);
使用var_dump();输出,会得到一个布尔类型的值,true或false
var_dump(function_exists('fun'));
二、函数的作用域
$bbs='百度';
function fn1(){
echo $bbs;
}
fn();//会报undefined
在函数内是访问不到函数外的变量的
function fn(){
$bbs='www.baidu.com';
}
fn();
echo $bbs;
在函数外也是访问不到函数内的变量的
如果我们现在想访问函数内的变量,这时候就需要借助关键词global了
global关键词用于访问函数内的全局变量
$bbs='百度';
function fn3(){
global $bbs;
$bbs='www.baidu.com';
echo '函数内'.$bbs;//www.baidu.com
}
fn3();
echo '函数外'.$bbs;//www.baidu.com
卸载一个函数
$bbs='百度';
function fn3(){
global $bbs;
$bbs='www.baidu.com';
unset($bbs);//卸载一个函数
echo '函数内'.$bbs;
}
fn3();
echo '函数外'.$bbs;//www.baidu.com
即使把函数卸载了我们发现在函数外输出的热然是 'www.baidu.com'
静态变量 static:
作用:
1.是在所有对函数调用中共享
2.只有在第一次调用时赋值
function fn(){
$i=1;
$i++;
echo $i;
}
fn();//2
fn();//2
fn();//2
fn();//2
fn();//2
我们发现反复调用函数,输出的都是2
如果我们想输出2,3,4,5那么我们就需要做如下改变
function fn(){
static $i=1;
$i++;
echo $i.'<br>';
}
fn();
fn();
fn();
fn();
fn();
三、按值传递与按址传递
按值传递
function eat($name){
$name=$name.'女士';
echo $name.'在吃饭<br>';
}
$name='小张';
eat($name);
echo $name;
按址传递
function eat(&$name){
$name=$name.'女士';
echo $name.'在吃饭<br>';
}
$name='小张';
eat($name);
echo $name;
四、在函数中传递多个参数
func_get_args();//接收一个参数,包含数组中的所有参数
func_num_args;取得共有几个参数
func_get_arg(整数);//获得第几个
参数,序号是从0开始
function stu_name(){
$arr=func_get_args();
//便利
foreach($arr as $key=>$value){
echo '学生{$key}的名字是:'$value.'<br>';
echo '一共有'.func_num_args().'名学生';
echo '第三个学生是'.func_get_arg(2);
}
}
stu_name('张三','李四','王五','赵六','周期','杨八','李九');
五、递归调用
递归:在函数体内调用自己,递归调用应该加上一个停止调用的函数,否则会陷入死循环
求阶乘:
function jc($i){
if($i>1){
$s=$j*jc($i-1);
}else{
$s=1
}
return $s;
}
echo jc(3);