(28)PHP中函数的声明(29)PHP中函数的使用

(28)

函数的定义:

1、函数是一个被命名的
2、独立的代码段
3、它执行特定的任务(功能)
4、并可以给调用它的程序返回一个值
(28)PHP中的函数声明
函数的优点:
1. 提高程序的重用性
2. 提高程序的可维护性
3.可以提高软件的开发效率
4.提高软件的可靠性
5.控制程序的复杂性


函数的声明
 
 1、  function 函数名(){
  函数体
  }
 
 2、  function 函数名(参数1, 参数2, 参数.... )  //参数列表,如果有多个就作用,分开
   {
函数体
  }


 3、  function 函数名(){

函数体
  返回值;
   }
4、   function 函数体(参数列表){
函数体
返回值
   }
   一、函数必须调用才能执行,可以在声明之前调用,也可以在函数声明之后调用(在C语言只能在声明之后调用,如果在之前调用要有一个头定义)其他语言,只要在脚本能找到这个函数,在其他地方调用都是一样的。
    二、函数名命名和变量一样, aaa bbb ccc  aaaBbbCcc, 函数名称一定要有意义
    三、函数在声明时不能重名,也不能跟系统函数重名
  
   四、可以通过向函数传递参数,改变函数的行为(在参数里面声明的变量可以在调用时赋值,而在函数里面声明的变量只有手工的去赋值)
      1、  形参:就在声明函数时,声明的参数,参数就是变量,多个参数用,分开
      2、 实参: 调用函数时传给形参数值(数据,也可以变量)


形参是声明,实参是给形参调用时赋值的
参数不易定义太多,因为都是一一对应容易乱套。
参数跟返回值一样都可以有可以没有。


   五、如果没有返回值则称为过程
   六、通过使用return 语句返回数据,例如
sum(10, 5);
function sum($x, $y){
$sum=0;


$sum=$x*$x+$y+$y
 它不会有结果,因为它没有return,只是一个过程。

sum(10, 5);
function sum($x, $y){
$sum=0;


$sum=$x*$x+$y+$y;


return $sum;
这样就有结果了。
当然我们就可以调用了
echo sum(10, 5);//输出
echo '<br>';    //换行
echo sum(10,5)+100;  //现在sum(10, 5)只相当于一个值,我们可以再加上一个值;
echo '<br>';
$sum=sum(3, 4);
echo $sum;
function sum($x, $y){
$sum=0;


$sum=$x*$x+$y+$y;


return $sum;
}
七、函数执行到return语句就结束,所以不要在这个语句后写代码,也可以使用return结束函数的执行,在PHP中不提示错误,但是没有意义,在其他语言例如java,会提示一个永远执行不到的错误。
 /


echo table(10, 10, 800, "aaaa", "red");


echo table(5, 5, 500, "bbbb", "green");


echo table(2, 2, 200, "cccc", "blue");


function table($row, $col, $width, $tableName, $color){  //标记表格,可以有多个声明变量,用“,”隔开
   $str='<table border=1 width="'.$width.'" align="center">';    //将所有的表格都连接到一个字符串中
   $str.='<caption><h1>'.$tableName.'</h1></caption>';//里面是表名。

   for($i=0; $i<$row; $i++){
  if($i%2==0)
  $bg="#ffffff";
  else
$bg=$color;
    $str.='<tr bgColor="'.$bg.'">';
for($j=0; $j<$col;$j++ ){
$str.='<td>'.($i*$row+$j).'</td>';
}
$str.='</tr>';
   }


   $str.='</table>';


   return $str;
}
函数:
function 出差(谁, 目的地, 联系人,交通){
 
  '''''''
 
  return 出差的结果
 
    }
    领导2=出差(张三,上海, 王五, 飞机);
    领导4=出差(李四, 大连, 赵六, 火车);
 
     函数名的作用:
     
1. 调用函数,开始执行函数
2. 通过函数名后面的参数可以向函数中传递数据

3. 函数名就是返回的值


   (29)

PHP的变量的范围
局部变量: 在函数中声明的变量就是局部变量,只能在自己的函数内部使用。
全局变量: 在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可使用
    
     PHP的变量分不出 是声明还是使用, 因为它不像javascript,加上var就是声明,不加var就是使用。
一、  在PHP中使用全局变量 要通过global关键字将这个全局变量包括到函数中才能使用到,在global声明之后才是使用全局的变量


$a=10;
a


function demo(){
global $a;  /*告诉程序$a是全局变量,否则会认为是再次声明$a,如果还有一个全局变量$b,可以写成global $a;
           global $b;
        或者global $a,$b;   */
$a+=10;
echo $a." demo<br>";
}


function test(){
global $a;
$a+=5;
echo $a." test<br>";
}


echo $a."----<br>";
demo();
echo $a."!!!!<br>";
demo();
echo $a."@@@@@<br>";
test();
echo $a."#######<br>";


二、参数就是局部变量,这个局部变量可以调用 时去赋值。
 
$a=10;




function demo($a){
$a+=5;


}


function test($b){
$b+=10;
}


demo($a);
test($a);




echo $a;   //结果为10,跟内部声明是一样的,不会影响到外部


三、PHP的静态变量
 
 静态变量只能声明在函数中(类中),不能在全局声明
 方法:使用static在变量前;


 作用:一个变量可以在同一个函数在多次调用中同用。
 1. 静态变量在静态代码段中保存
 2. 一个函数多次调用之间共用,但只在第一次调用 函数时声明到内存,以后再调用用,就不再声明,而直接使用,可以间接地用它来显示程序调用次数。
 */




   function test(){
    static $a=0;  //如果不加static,那么会输出12个1,加上static之后会输出1到12


$a++;


echo $a."<br>";
   }


  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();
  test();


变量函数:如果一个变量后面有括号$var=hello  $var(), 就将寻找与变量值同名的函数 hello();
 
function one($a, $b){
  return $a+$b;
  }


  function two($a, $b){
  return $a*$a+$b*$b; 
  }


  function three($a, $b){
  return $a*$a*$a+$b*$b*$b;
  }




  $var=one;
  $var="two";   //字符串的形式
  $var=three;


 echo "结果:".$var(3, 4)."<br>";  //同一个输出结果,我们可以运用不同的函数来改变结果。


我们写的程序要告诉读者的东西:
1. 函数的功能------------决定是否使用这个函数,使别人读你程序的时候易懂
2. 函数的参数------------决定函数怎么调用 ---有几个参,传什么类型的值,。。。。
3. 函数的返回值----------调用后怎么处理这个函数,是直接使用还是参与运算?


PHP5给了我们2000多个函数。。。 都属于系统函数,都可以通过名称直接使用。


如果有这样一个功能,你自己也可以写出来,系统函数也有,那么要用哪一个呢?
一定要先使用系统函数,如果系统函数没有你想要的功能,再去自己定义函数,因为就算你的代码写的再好也不如系统函数效率高。


别的语言的调用方法只有一种,就是常规调用,一个函数有几个参数调用几个值就可以了。
但是PHP的调用方法有很多
1. 常规函数  
bool copy ( string source, string dest ) //拷贝文件(原字符串,目标字符串)
2. 带有mixed , mixed表示可以传任何类型的数据 
bool chown ( string filename, mixed user )
3. 带有&参数的函数, 表示引用赋值, 这个参数不能传值,只能传一个变量,然后函数将变量的值改变,我们在使用这个变量时,值也是变化的
bool arsort ( array &array [, int sort_flags] )


$arr=array(1, 9, 5, 8, 3, 4);


sort($arr);


print_r($arr);  //1,3,4,5,8,9,


4.默认函数 带有[]的函数, 表示这个参数是可选的,如果你传值了就使用你传的值,如果没有传值则使用默认值
    直接在声明函数时,就为参数给初值。
    可选值和必须值, 必须从后向前设置
bool arsort ( array &array [, int sort_flags] )   //第一个()必传值,第二个[]是可选值




(1)、function demo($a, $b, $c){
    echo "### $a ### $b ##### $c ########<br>";
   }


   demo();   //没有赋值,会警告提示缺少三个值。


(2)、function demo($a, $b, $c){
    echo "### $a ### $b ##### $c ########<br>";
   }


   demo(1);   //唯一一个值赋给第一个


(3)、function demo($a=1, $b=20, $c){
    echo "### $a ### $b ##### $c ########<br>";
   }


   demo(8,9);//第三个值是必须赋值,仍然警告




(4)、function demo($a=1, $b=2, $c=3){
    echo "### $a ### $b ##### $c ########<br>";
   }


   demo(7,8,9);  //输出值7,8,9


5. 带有...的参数函数, ...表示可以传任意多个参数
int array_unshift ( array &array, mixed var [, mixed ...] )
      


  function demo(){
 $args=func_get_args();


       {   echo  count($args);  //如果用count会输出所有参数的个数   9个     }


 $sum=0;
 for($i=0; $i<count($args); $i++){
  $sum+=$args[$i];         //可以计算出所有参数的和
 }


 return $sum;
  }
 echo  demo(1, 2, 3, 4, 5, 6, 7,8,9);


用下面函数一样可以实现
function demo(){
 $sum=0;
 for($i=0; $i<func_num_args(); $i++){    //用func_num_args输出参数个数
  $sum+=func_get_arg($i);   //可以求和
 }


6.回调函数 带有callback,  就是调用这个函数时需要我们传一个函数进来(函数名,函数名字串)
array array_filter ( array input [, callback callback] )




 function demo($x, $y){
  return $x*$y;
  }


  function test($x, $y){
  return $x*$x + $y*$y;
  }


   function sum($a, $b, $fun){    //将demo函数传入$fun,同时将$a,$b传入$x,$y
   
return $a+$b+$fun($a,$b);
   
   }
echo sum(2, 3, demo);
echo sum(2, 4, "test");




$a=array(1, 2, -3,4,-5,6,-7,8,9);


  print_r(array_filter($a, demo));  //可以选取正数或者倍数之类的




   function demo($n){
    if($n%2== 0)
return true;
else
return false;
   }
















































































































































































 











































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值