99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

PHP中的函數(shù)聲明與使用

發(fā)布時間:2017-05-28 14:15  回復(fù):0  查看:2145   最后回復(fù):2017-05-28 14:15  

本文和大家分享的主要是php中函數(shù)相關(guān)內(nèi)容,一起來看看吧,希望對大家學(xué)習(xí)php有所幫助。

  函數(shù)

  1.  函數(shù)名是標(biāo)識符之一,只能有字母數(shù)字下劃線,開頭不能是數(shù)字;

  函數(shù)名的命名,必須符合小駝峰法則”FUNC(),func(),Func();

  函數(shù)名不區(qū)分大小寫;

  函數(shù)名不能與已有函數(shù)同名,不能與內(nèi)置函數(shù)名同名;

  2.   function_exists("func");用于檢測函數(shù)是否已經(jīng)聲明;

  注意 傳入的函數(shù)名,必須是字符串格式,返回結(jié)果為true/false;

  echo打印時,true1,false不顯示;

  [php中變量的作用域]

  1.局部變量:聲明在函數(shù)內(nèi)部的變量,稱為局部變量,只在函數(shù)內(nèi)部使用, 函數(shù)外如需使用,需在函數(shù)中使用return關(guān)鍵字返回;

  2.全局變量:聲明在函數(shù)外部的變量,稱為全局變量;

  3 .(較為常用) 函數(shù)中使用變量默認(rèn)使用局部變量,如果需在函數(shù)中使用全局變量, 需要使用global關(guān)鍵字將全局變量引入使用;

  函數(shù)中的變量名,如果與全局變量名重復(fù),global之上,為函數(shù)的局部變量,global之下為函數(shù)的全局變量;

  4.$GLOBALS[''] 全局?jǐn)?shù)組;

  $GLOBALS['a3'] 數(shù)組,是PHP給我們內(nèi)置的全局?jǐn)?shù)組,可以直接給數(shù)組添加值,無論在函數(shù)內(nèi)外聲明, 均可在任何地方直接使用;eg$GLOBALS['a3'] =10

  5.函數(shù)中使用全局變量,還有一種方式: 通過給參數(shù)傳參,可以在函數(shù)內(nèi)部使用全局變量, 但是傳遞以后的參數(shù)是局部變量,內(nèi)部改變,外部不會改變,除非傳遞的參數(shù)是地址 .function func($a1,&$a2){}func($a1,$a2);

  (原因)   $a1是局部變量,內(nèi)部改變,外部不會改變,$a2也是內(nèi)部變量地址,內(nèi)部改變,外部也改變;

  如果函數(shù)的形參,出現(xiàn)了取地址符號,則調(diào)用函數(shù)時,實參必須是變量,而不能是字面量

  egfunc($a1,$a2)對的 func($a1,2)錯的

  【靜態(tài)變量】

  靜態(tài)變量:使用static關(guān)鍵字聲明,static $num=10;

  靜態(tài)變量的特點:

  靜態(tài)變量在函數(shù)第一次加載的時候進(jìn)行聲明;

  函數(shù)使用完不會立即釋放靜態(tài)變量,靜態(tài)變量在整個腳本執(zhí)行過程中只會聲明一次;

  同一函數(shù)多次調(diào)用,共享同一個靜態(tài)變量。

  [函數(shù)的參數(shù)傳遞方式]

  在PHP中實參的個數(shù)只能比形參多,不能比形參少,否則會報錯

  1.常規(guī)參數(shù)傳遞:

  function fun($a){

  $a+=10;

  return $a;

  }

  echo fun(10);

  2.引用類型的參數(shù):

  $a=10;

  function func(&$a){

  $a+=10;

  }func($b);

  引用參數(shù)傳遞,函數(shù)內(nèi)部修改變量,函數(shù)外同步變化;

  形參為引用參數(shù),實參只能是變量,不能是字面量。

  3.默認(rèn)參數(shù):

  function func($a,$b=10){

  return $a+$b;

  }

  echo func(30);   //$b的默認(rèn)參數(shù)是10

  如果參數(shù)中既有默認(rèn)參數(shù),又有非默認(rèn)參數(shù),那么,默認(rèn)參數(shù)列表必須要在非默認(rèn)參數(shù)列表的后面,即要保證非默認(rèn)參數(shù)的賦值順序.

  func_get_args();   //取所有參數(shù)列表(數(shù)組)

  func_num_args();   //取所有參數(shù)的總個數(shù),相當(dāng)于count(func_num_args());

  func_get_arg(0);   //根據(jù)下表,取每個參數(shù)

  [變量函數(shù) ]

  將一個函數(shù)名,轉(zhuǎn)為字符串后,賦給一個變量。這個變量,就是我們所說的變量函數(shù),可以加()調(diào)用函數(shù)內(nèi)容;

  function func(){ }---->fun="func",----->func( );

  [回調(diào)函數(shù)]

  1.使用變量函數(shù),自定義回調(diào)函數(shù);

  function($func){func();}-->function f(){}--->func("f");

  2使用call_user_func_arraycall_user_func自定義回調(diào)函數(shù);

  兩個函數(shù)的第一個參數(shù),均為回調(diào)函數(shù),表示執(zhí)行當(dāng)前回調(diào);

  不同點在于:call_user_func_array()第二個參數(shù)為數(shù)組,并將數(shù)組的每一個值賦給回調(diào)函數(shù)的參數(shù)列表,相當(dāng)于js中的apply(); 而,call_user_func,是將回調(diào)函數(shù)的參數(shù)列表,直接展開寫到第2-多個參數(shù)中,相當(dāng)于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);

  [ 匿名函數(shù)]

  由于變量函數(shù)在調(diào)用時存在多種調(diào)用方式,$fun()/func()所以為了讓函數(shù)的調(diào)用更為統(tǒng)一,才產(chǎn)生了匿名函數(shù)。

  聲明匿名函數(shù)函數(shù)體后面的;必不可少!!!

  匿名函數(shù)本身也是變量,用var_dump檢測為object類型;

  常規(guī)函數(shù):function func(){

  $fun="func"

  }

  $fun();//func();

  匿名函數(shù):

  $func=function($a){

  echo "我是匿名函數(shù){$a}
";

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

  $func(10);

  var_dump($func);

  例題:計算一個數(shù)的階層:

  function jiec($num){

  static $jie=1;    //函數(shù)執(zhí)行完不會立即釋放

  if($num>0){

  $jie*=$num;   //3

  jiec(--$num);

  }

  return $jie;

  }

  echo jiec(10);

  [遞歸函數(shù)]

  指的是在函數(shù)內(nèi)部,調(diào)用函數(shù)自身的操作;當(dāng)外層函數(shù)體中,遇到自身函數(shù)調(diào)用,繼續(xù)進(jìn)入內(nèi)層函數(shù)執(zhí)行,而自身函數(shù)的后半部分暫不執(zhí)行,知道最內(nèi)層函數(shù)執(zhí)行完以后,在逐步向外執(zhí)行;

  function func($num){

  echo $num."
";

  if($num>0){

  func($num-1);

  //func(--$num);   試一試又不一樣的結(jié)果喲!

  //func($num--);

  }

  echo $num."
";

  }func(10);

  [include/require]

  1.兩者的作用就是用于引入外部的PHP文件到當(dāng)前文件中:include 'a.php';include ('a.php');

  2.兩者的區(qū)別:(對于錯誤的處理不同)當(dāng)引入文件錯誤時,include會產(chǎn)生警告,并不影響后續(xù)代碼的執(zhí)行,而require會產(chǎn)生錯誤,后續(xù)代碼不再執(zhí)行;

  3.一般當(dāng)用于在文件最上方導(dǎo)入某些文件時,使用require導(dǎo)入,如果失敗,則不執(zhí)行文件;

  如果是在某些分支條件中,導(dǎo)入執(zhí)行某些操作,一旦報錯不影響執(zhí)行結(jié)果。

  4.include_oncerequire_once表示:文件只能導(dǎo)入一次,如果多次調(diào)用函數(shù),則后面的文件會判斷文件是否導(dǎo)入,再決定是否導(dǎo)入新文件。

  (檢測文件是否導(dǎo)入時只關(guān)心文件是否已經(jīng)導(dǎo)入,并不關(guān)心使用何種方式導(dǎo)入的。)

  5.include/require可以導(dǎo)入各種類型的文件,相當(dāng)于在當(dāng)前文件copy了一份,但是copy過程中,PHP引擎會進(jìn)行適當(dāng)?shù)木幾g,確保不會出錯。

  6.includerequire是函數(shù)也是指令!PHP對于很多常用函數(shù),會提供執(zhí)行的寫法,eg:函數(shù)寫法echo("111");指令寫法echo "111";

 

來源:博客園

您還未登錄,請先登錄

熱門帖子

最新帖子

?