變數的作用域和靜態變數
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...