1 5PHP基礎 自定義函式和變數作用域

2021-09-29 21:02:50 字數 2056 閱讀 6231

變數的作用域和靜態變數

1.全域性變數 :global 關鍵字

$a = 1;

$b = 2;

function sum()

sum();

echo $b;

//example #2 使用 $globals 替代 global

$a = 1;

$b = 2;

function sum()

sum();

echo $b;

$globals 是乙個關聯陣列,每乙個變數為乙個元素,鍵名對應變數名,值對應變數的內容。$globals 之所以在全域性範圍內存在,是因為 $globals 是乙個超全域性變數。以下範例顯示了超全域性變數的用處: 

2.靜態變數

變數範圍的另乙個重要特性是靜態變數(static variable)。

靜態變數僅在區域性函式域中存在,但當程式執行離開此作用域時,其值並不丟失。

僅初始化一次

初始化時需要賦值

可以記錄函式的呼叫次數,從而可以在某些條件下終止遞迴

看看下面的例子: 

//example #5 使用靜態變數的例子

function test()

現在,變數 $a 僅在第一次呼叫 test() 函式時被初始化,之後每次呼叫 test() 函式都會輸出 $a 的值並加一。 

靜態變數也提供了一種處理遞迴函式的方法。遞迴函式是一種呼叫自己的函式。寫遞迴函式時要小心,因為可能會無窮遞迴下去。必須確保有充分的方法來中止遞迴。以下這個簡單的函式遞迴計數到 10,使用靜態變數 $count 來判斷何時停止: 

//example #6 靜態變數與遞迴函式

function test()

$count--;

}

3.函式引數以及引數的引用傳遞

預設情況下,函式的引數通過值傳遞

如果希望允許函式修改它的值,必須通過引用的傳遞引數

通過引用傳遞引數

預設情況下,函式引數通過值傳遞(因而即使在函式內部改變引數的值,它並不會改變函式外部的值)。如果希望允許函式修改它的引數值,必須通過引用傳遞引數。 

如果想要函式的乙個引數總是通過引用傳遞,可以在函式定義中該引數的前面加上符號 &: 

//example #2 用引用傳遞函式引數

function add_some_extra(&$string)

$str = 'this is a string, ';

add_some_extra($str);

echo $str;    // outputs 'this is a string, and something extra.'

4.函式的返回值

值通過使用可選的返回語句return返回

可以返回包括陣列和物件的任意型別

返回語句會終止函式執行,將控制權交回函式呼叫處

省略return,返回值為null,不可有多個返回值

5.函式的引用返回

從函式返回乙個引用,必須在函式宣告和指派返回值給乙個變數時都使用引用運算子&

function &myfunc()

$a = myfunc();

$a = &myfunc(); //將$a 指向函式的返回值

$a = 100;

echo myfunc();

6.例題:寫出下列程式的值?

$var1 = 5;

$var2 = 10;

function foo(&$my_var)

$my_var = 5;

echo foo($my_var)."\n"; //4

echo $my_var."\n"; //8

echo $var1."\n"; //7

echo $var2."\n"; //10

$bar = 'foo';

$my_var = 10;

echo $bar($my_var)."\n"; //4

PHP基礎 自定義函式 變數範圍 函式引數傳遞

一 自定義函式 function 函式名 形式引數1,形式引數2,形式引數n 函式的呼叫 函式的呼叫需要遵循定義函式的時候寫的規則,一一對應,將具體的實際引數傳給定義函式時候寫的形式引數!呼叫函式之後執行的過程是相對獨立的,互補干擾,預設沒有聯絡!執行完畢返 用的位置繼續向下執行 函式的返回值 返回...

PHP自定義函式

使用者自定義函式也稱自定義函式,它們不是php提供的,是由程式設計師建立的.由於自己建立了這樣的函式,所以就可以完全控制這些函式.因此可以讓乙個函式完全按照自己希望的方式執行.1,申明函式 在php中,定義函式的方法同其他程式語言幾乎一樣.下面是php申明函式的語法結構 function funct...

一 PHP語言基礎 自定義函式

php語言基礎 自定義函式 一 自定函式的定義和呼叫 函式是代表一組語句的識別符號,它能夠實現程式模組化的策略.在php中函式語法格式如下 function function name arg 1,arg 2,arg n e.x.function jiecheng x echo x.的階乘是 num...