深入php函數與變數範圍的詳解

來源:互聯網
上載者:User
  1. function &func(){
  2. return "";
  3. }
複製代碼

2.在調用時,在函數前增加引用符號。

  1. $return = &func();
複製代碼

PHP的範圍只有兩種1, 函數外,全域範圍。2, 函數內,局部範圍。

法則:範圍不重疊。(全域不能訪問局部,局部不能訪問全域)但是js是可重疊的。

特殊的:預定義變數(9大超全域陣列變數)--注意是陣列變數。超全域:超級全域:既可以在全域使用,也可以在局部使用。所有的範圍都生效。

  1. $_GET['v1'] = "123";
  2. echo $_GET['v1']
複製代碼

$GLOBALS 超級全域變數,是專門儲存超全域變數的,注意沒有底線。

修改全域變數,會影響GLOBALS內元素的值;

原因:使用的一個資料空間。相當於:

  1. $GLOBALS[‘v8’] = &$v8;
複製代碼

2. create_function -- 建立函數的另一方式

  1. $func = create_function('$p',“echo $p);
複製代碼

var_dump($func); 返回一個函數名。 次函數建立出來的函數名 為lambda風格。而且在函數名前有一個 不可見字元。Ascii為0的不可見字元。也可以調用。 $result = ”\x0“."lamba8"(20); 注意要知道函數名才可調用。

最常用的地方出現在回呼函數內。因此 create_function所建立的函數,與普通函沒有區別(存在函數的三個部分);

但是此函數不可以在定以前 調用,因此 只用執行 create_function才能得到該函數。最常用的地方:在 callback參數上,參數create_function相當於一個回調結構入參。

匿名函數:匿名函數 建立的函數是沒有名的, 而是一個 對象:與create_function的區別:

匿名函數究竟是什嗎?1, 將匿名函數可以當值來看待(php中是物件類型的)2, Php是通過 類 closure 類來實現匿名函數功能的。每一個匿名函數都是Closure類一個對象。Closure單詞的意思是閉包。因此有時php也將 匿名函數稱之為 閉包函數。3, 為什麼一個對象可以當函數來調用?(oop)

可以使用 外層範圍的變數的文法:注意:外層與全域的區別。外層可能是全域,也可能是局部。看當前匿名函數是定義的位置。

Use文法預設是值傳遞,可以引用傳遞.Callback1, 函數名2, Create_function3, Function 匿名函數

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.