php中的函数

一、函数

一部分可重复执行的代码段,多次执行,一次编译

特点:
 1.减少程序运行的复杂性
 2.提高程序的可靠性
 3.提高函数的开发效率
 4.提高程序的维护性
 5.提高程序的重复性
语法
1.带参数的函数
function fun(参数1,参数2){
                  
 }

 function sayName($name,$age,$city){
    echo "你的名字:".$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.'
'; } fn(); fn(); fn(); fn(); fn();

三、按值传递与按址传递

按值传递
function eat($name){
        $name=$name.'女士';
        echo $name.'在吃饭
'; } $name='小张'; eat($name); echo $name;
按址传递
function eat(&$name){
   $name=$name.'女士';
   echo $name.'在吃饭
'; } $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.'
'; 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);

你可能感兴趣的:(php中的函数)