PHP中的函式宣告與使用圖文詳解

來源:互聯網
上載者:User
這篇文章主要介紹了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);

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

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";

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.