php面試專題---5、流程控制考點
一、總結
一句話總結:
看代碼不要先看函數里面的內容,要用的時候再去看;注意靜態,注意變量作用域,php中的內置函數需要去歸類總結,就是太容易忘記了
1、寫出如下程序的輸出結果,解釋為什么?
|||-begin
<?php $count = 5; function get_count() { static $count; return $count++; } echo $count;-->5 ++$count;-->6 echo get_count();-->null echo get_count();-->1
|||-end
結果:5 1
null不會被輸出
null++之后是1
函數內部需要手段才能使用外部變量
2、變量的作用域和靜態變量?
php中函數內使用全局變量需有手段:變量的作用域也稱變量的范圍,變量的范圍即它定義的上下文背景(也是它的生效范圍)。大部分的PHP變量只有一個單獨的范圍。這個單獨的范圍跨度同樣包含了include和require引入的文件。
global關鍵字:在函數內部寫global $outer;即可在函數內部使用
3、php static關鍵字注意點?
1.僅初始化一次;2.初始化時需要賦值
3.值保留:每次執行函數該值會保留
4.局部:static修飾的變量是局部的,僅在函數內部有效
5.可以用於遞歸調用次數:可以記錄函數的調用次數,從而可以在某些條件下終止遞歸
4、解釋下列程序的 結果?
|||-begin
function mgFunc(){ Static $a=1; echo $a++; } myFunc();→1 myFunc();→2 myFunc();→3
|||-end
初始化只有一次,每次執行函數該值會保留
可用來做遞歸次數判斷
5、函數的參數及參數的引用傳遞 是怎樣?
默認傳值:默認情況下,函數參數通過值傳遞
& $a:如果希望允許函數修改它的值,必須通過引用傳遞參數:比如
6、php函數的返回值的 注意點?
return返回:值通過使用可選的返回語句(return)返回
任意類型:可以返回包括數組和對象的任意類型
終止運行:返回語句會中止函數執行,將控制權交回函數調用處
數組返回多個值:返回多個值可以把值放在一個數組:省略return,返回值為NULL,不可有多個返回值
7、函數的引用返回實例?
|||-begin
function &mgFunc(){ //注意這里的&符號 static $b=10; return $b; } $a=myFunc();-->10 $a=&myFunc(); //注意這里的&符號 $a=100; echo myFunc();-->100
|||-end
注意這里把函數賦值給了一個變量
從函數返回一個引用,必須在函數聲明和指派返回值給一個變量時都使用引用運算符&
8、外部文件的導入 注意事項?
包含並運行:include/require語句包含並運行指定文件;
找路徑:如果給出路徑名按照路徑來找,否則從include_path中查找;如果include_path中也沒有,則從調用腳本文件所在的目錄和當前工作目錄下尋找
繼承變量范圍:當一個文件被包含時,其中所包含的代碼繼承了include所在行的變量范圍
9、php文件引入中include和require的區別?
警告和致命錯誤:加載過程中未找到文件則include結構會發出一條警告;這一點和require不同,后者會發出一個致命錯誤
E_COMPILE_ERROR:require 在出錯時產生E_COMPILE_ERROR級別的錯誤。換句話說將導致腳本中止
E_WARNING:而 include只產生警告(E_WARNING),腳本會繼續運行。
檢查是否被包含過:require(include)/require_one(include_once)唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。
10、php系統內置函數注意點?
IP處理函數:ip2long()、long2ip()
序列化及反序列化函數:serialize()、unserialize()
時間函數 date()、strtotime()、mktime()、time()、microtime()、date_default_timezone_set() IP處理函數 ip2long()、long2ip() 打印處理 print()、printf()、print_r()、echo、sprintf()、var_dump()、var_export() 序列化及反序列化函數 serialize()、unserialize() 字符串處理函數 implode()、explode()、join()、strrev()、trim()、 ltrim()、rtrim()、strstr()、number_format()... 數組處理函數
二、內容在總結中