久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

PHP中的函數聲明與使用教程

來源:技術員聯盟┆發布時間:2017-09-06 18:52┆點擊:

  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}

  ";

  }; //聲明匿名函數函數體后面的;必不可少

  $func(10);

  var_dump($func);

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

  function jiec($num){

  static $jie=1; //函數執行完不會立即釋放

  if($num>0){

  $jie*=$num; //3

  jiec(--$num);

  }

  return $jie;

  }

  echo jiec(10);

  [遞歸函數]