PHP中的函數聲明與使用

                                           函數
1.  函數名是標識符之一,只能有字母數字下劃線,開頭不能是數字;
     函數名的命名,必須符合「小駝峯法則」FUNC(),func(),Func();
     函數名不區分大小寫;
     函數名不能與已有函數同名,不能與內置函數名同名;
2.   function_exists("func");用於檢測函數是否已經聲明;
      注意傳入的函數名,必須是字符串格式,返回結果爲true/false;
      echo打印時,true爲1,false不顯示;
                        [php中變量的做用域]
1.局部變量:聲明在函數內部的變量,稱爲局部變量,只在函數內部使用,函數外如需使用,需在函數中使用return關鍵字返回;
  2.全局變量:聲明在函數外部的變量,稱爲全局變量;
  3.(較爲經常使用)函數中使用變量默認使用局部變量,若是需在函數中使用全局變量,須要使用global關鍵字將全局變量引入使用;
   函數中的變量名,若是與全局變量名重複,global之上,爲函數的局部變量,global之下爲函數的全局變量;
4.$GLOBALS[''] 全局數組;
    $GLOBALS['a3'] 數組,是PHP給咱們內置的全局數組,能夠直接給數組添加值,不管在函數內外聲明,都可在任何地方直接使用;eg: $GLOBALS['a3'] =10;
  5.函數中使用全局變量,還有一種方式:經過給參數傳參,能夠在函數內部使用全局變量,可是傳遞之後的參數是局部變量,內部改變,外部不會改變,除非傳遞的參數是地址.function func($a1,&$a2){}func($a1,$a2);
  (緣由)  $a1是局部變量,內部改變,外部不會改變,$a2也是內部變量地址,內部改變,外部也改變;
          若是函數的形參,出現了取地址符號,則調用函數時,實參必須是變量,而不能是字面量 ;
           eg:func($a1,$a2)對的 func($a1,2)錯的
                                             【靜態變量】
  靜態變量:使用static關鍵字聲明,static $num=10;
  靜態變量的特色:
     靜態變量在函數第一次加載的時候進行聲明;
     函數使用完不會當即釋放靜態變量,靜態變量在整個腳本執行過程當中只會聲明一次;
     同一函數屢次調用,共享同一個靜態變量。
                                           [函數的參數傳遞方式]
  在PHP中實參的個數只能比形參多,不能比形參少,不然會報錯
1.常規參數傳遞:
   function fun($a){
    $a+=10;
    return $a;
   }
  echo fun(10);
2.引用類型的參數:
   $a=10;
   function func(&$a){
   $a+=10;
   }func($b);
   引用參數傳遞,函數內部修改變量,函數外同步變化;
   形參爲引用參數,實參只能是變量,不能是字面量。
3.默認參數:
   function func($a,$b=10){
   return $a+$b;
   }
   echo func(30);   //$b的默認參數是10
   若是參數中既有默認參數,又有非默認參數,那麼,默認參數列表必需要在非默認參數列表的後面,即要保證非默認參數的賦值順序.
   func_get_args();   //取全部參數列表(數組)
    func_num_args();   //取全部參數的總個數,至關於count(func_num_args());
    func_get_arg(0);   //根據下表,取每一個參數
                                 [變量函數 ]
  將一個函數名,轉爲字符串後,賦給一個變量。這個變量,就是咱們所說的變量函數,能夠加()調用函數內容;
              function func(){ }---->fun="func",----->func( );
                                 [回調函數]
  1.使用變量函數,自定義回調函數;
      function($func){func();}-->function f(){}--->func("f");
   2使用call_user_func_array和call_user_func自定義回調函數;
     兩個函數的第一個參數,均爲回調函數,表示執行當前回調;
    不一樣點在於:call_user_func_array()第二個參數爲數組,並將數組的每個值賦給回調函數的參數列表,至關於js中的apply(); 而,call_user_func,是將回調函數的參數列表,直接展開寫到第2-多個參數中,至關於js中的call();
    eg:call_user_func_array("func",array(1,2,3));--->func(1,2,3);
    call_user_func("func" 1,2,3);---->func(1,2,3);
                                [ 匿名函數]   
    因爲變量函數在調用時存在多種調用方式,$fun()/func()因此爲了讓函數的調用更爲統一,才產生了匿名函數。
    聲明匿名函數函數體後面的;必不可少!!!
    匿名函數自己也是變量,用var_dump檢測爲object類型;
常規函數:
function func(){ $fun
="func" } $fun();//func();
匿名函數:
$func=function($a){
 echo "我是匿名函數{$a}<br/>";
   }; //聲明匿名函數函數體後面的;必不可少
  $func(10);
  var_dump($func);

例題:計算一個數的階層:php

function jiec($num){
    static $jie=1;    //函數執行完不會當即釋放
    if($num>0){
        $jie*=$num;   //3
        jiec(--$num);
    }
    return $jie;
}
 echo jiec(10);

 
                                [遞歸函數]
數組

指的是在函數內部,調用函數自身的操做;當外層函數體中,遇到自身函數調用,繼續進入內層函數執行,而自身函數的後半部分暫不執行,知道最內層函數執行完之後,在逐步向外執行;
function func($num){
     echo $num."<br/>";
    if($num>0){
        func($num-1);
   //func(--$num);   試一試又不同的結果喲!
   //func($num--);
    }
    echo $num."<br/>";
 }func(10);

                                [include/require]
   1.二者的做用就是用於引入外部的PHP文件到當前文件中:include 'a.php';include ('a.php');
   2.二者的區別:(對於錯誤的處理不一樣)當引入文件錯誤時,include會產生警告,並不影響後續代碼的執行,而require會產生錯誤,後續代碼再也不執行;
   3.通常當用於在文件最上方導入某些文件時,使用require導入,若是失敗,則不執行文件;
     若是是在某些分支條件中,導入執行某些操做,一旦報錯不影響執行結果。
   4.include_once和require_once表示:文件只能導入一次,若是屢次調用函數,則後面的文件會判斷文件是否導入,再決定是否導入新文件。
     (檢測文件是否導入時只關心文件是否已經導入,並不關心使用何種方式導入的。)
   5.include/require能夠導入各類類型的文件,至關於在當前文件copy了一份,可是copy過程當中,PHP引擎會進行適當的編譯,確保不會出錯。
   6.include和require是函數也是指令!PHP對於不少經常使用函數,會提供執行的寫法,eg:函數寫法echo("111");指令寫法echo "111";
  
app

                若是以爲還不錯的話,動動你的手指給小編點個贊吧!你會轉運喲!!!
相關文章
相關標籤/搜索