函數概念: 函數是用來完成某種特定任務的可重用代碼塊; 函數可以使程式更具模塊化,擁有良好的結構; 函數定義後在程式中可以重覆調用; 函數分為內置函數和自定義函數 考點: 變數的作用域和靜態變數 延伸1,函數的參數及參數的引用傳遞。 延伸2,函數的返回值及引用返回。 延伸3,外部文件的導入。 延伸4 ...
函數概念:
函數是用來完成某種特定任務的可重用代碼塊;
函數可以使程式更具模塊化,擁有良好的結構;
函數定義後在程式中可以重覆調用;
函數分為內置函數和自定義函數
考點:
變數的作用域和靜態變數
延伸1,函數的參數及參數的引用傳遞。
延伸2,函數的返回值及引用返回。
延伸3,外部文件的導入。
延伸4,系統內置函數。
1.變數的作用域
變數的作用域也稱變數的範圍,變數的範圍即它定義的上下文背景(也是它的生效範圍)。大部分的PHP變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了include和require引入的文件。
<?php
$c = 5;//全局變數
function get_count()
{
$c;//局部變數$c=null;
return $c;
}
echo $c;//5
echo get_count();//null
global關鍵字
<?php
$c = 5;//全局變數
function get_count()
{
global $c;//全局變數$c=5;
$GLOBALS['c'];//超全局變數,可以直接拿來用。
return $c;
}
echo $c;//5
echo get_count();//5
2.靜態變數static
靜態變數僅在局部函數域中存在,但當程式執行離開此作用時,其值並不會消失。
特點:1.僅初始化一次。2.初始化時需要賦值。3.每次執行函數該值會保留。4.static修飾的變數是局部的,僅在函數內部有效。5.可以記錄函數的調用次數,從而可以在某些條件下終止遞歸。
function myFunc()
{
static $a = 1;//靜態變數初始化
$a++;
return $a;
}
myFunc();//2
myFunc();//3
延伸1,函數的參數及參數的引用傳遞。
預設情況下,函數參數通過值傳遞。
如果希望允許函數修改它的值,必須通過引用傳遞參數。
$a = 1;
function myFun($a){//值傳遞
$a = 2;
}
myFun($a);
echo $a;//1
$a = 1;
function myFun(&$a){//引用傳遞
$a = 2;
}
myFun($a);
echo $a;//2
延伸2,函數的返回值及引用返回。
只通過使用可選的返回語句(return)返回。
可以返回包括數組和對象的任意類型。
返回語句中止函數執行,將控制權教會函數調用處。
省略return,返回值為null,不可以有多個返回值。
引用返回定義:從函數返回一個引用,必須在函數聲明和指派返回值給一個變數時都使用引用運算符&。
function &mgFUNC()
{
static $b = 10;
return $b;
}
$a = mgFunc();//10
$a = &mgFunc();//引用
$a = 100;
echo mgFunc();//100
延伸3,外部文件的導入。
include/require語句包含並運行指定文件。
如果給出路徑名按照路經來找,否則從include_path中查找;如果include_path中也沒有,則從調用腳本文件所在的目錄和當前工作目錄下尋找。
當一個文件被包含時,其中所包含的代碼繼承了include所在行的變範圍。
區別:
1,加在過程中未找到文件則include結構會發出一條警告;這一點和require不同,後者會翻出一個致命錯誤;require在出錯時產生E_COMPILE_ERROR級別的錯誤。換句話說將導致腳本中止而include只產生警告(E_WARNING)。
2,require(include)/require_one(include_one)唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。
延伸4,系統內置函數
1.時間日期函數
date()\strtotime()\mktime()\time()\microtime()\date_default_timezone_set().
2.列印處理
print()(語句)\printf()\print_r()\echo(語句)\sprintf()\var_dump()\var_export().
3.序列化及反序列化函數
serialize()\unserialize()
4.字元串處理函數
implode()\explode()\join()\strrev()\trim()\ltrim()\rtrim()\stratr()\number_format()...
5.數組處理函數
array_keys()\array_values()\array_diff()\array_intersect()\array_merge()\array_shift()\array_unshift()\array_pop()\array_push()\sort()等