1. 程式人生 > >php綜合複習題大全(上)——基礎篇

php綜合複習題大全(上)——基礎篇

1. 變數如何定義?如何檢查變數是否定義?如何刪除一個變數?判斷一個變數是否為空的函式?isset()unset()empty()

2. 什麼是可變變數?一個變數的變數名可以動態的設定和使用。$a = 'hello' , $$a = 'world', ${$a}=hello world

3. 變數賦值方式有哪幾種?1)直接賦值2)變數間賦值3)引用賦值

4. 引用和拷貝有什麼區別?拷貝是將原來的變數內容複製下來,拷貝後的變數與原來的變數使用各自的記憶體,互不干擾。引用相當於是變數的別名,其實就是用不同的名字訪問同一個變數內容。當改變其中一個變數的值時,另一個也跟著發生變化。

5. php中變數有哪些基本資料型別?php支援8種原始資料型別。包括:四種標量型別(布林型boolean,整型interger,浮點型float/double , 字串string兩種複合型別(陣列array , 物件object)兩種特殊型別(資源resourceNULL

6. 其它型別轉換為boolean型別時,哪些被認為是false布林值false,整型值0, 浮點型值0.0, 空白字串, 字串'0', 空陣列,特殊資料型別NULL, 沒有設定的變數。

empty()函式在哪些情況下返回true布林值false整型值0, 浮點型值0.0, 空白字串, 字串'0', 

array()空陣列,特殊資料型別NULL, 沒有任何屬性的物件,沒有賦值的變數。

7. 如果定義了一個變數$a ,但是沒有賦初始值那麼$a==0嗎?$a==false嗎? $a==''嗎?$a==NULL嗎?$a===NULL嗎?答:echo=>什麼都沒有 , var_dump=>NULLempty($b)==true嗎?———————————— echo=>1 , var_dump=>bool(true) 此時如果輸出$a++是多少?——————— echo=>什麼都沒有 , var_dump=>NULL如果輸出++$a又是多少?————————— echo=>1 , var_dump=>int(1)

8. 字串怎麼轉成整數,有幾種方法?怎麼實現?強制型別轉換: (整型)字串變數名;直接轉換:settype(字串變數,整型);intval(字串變數);

9. 標量資料和陣列的最大區別是什麼?一個標量只能存放一個數據,而陣列可以存放多個數據。

10. 常量如何定義如何檢測一個常量是否被定義?常量的值只能是哪些資料型別?define()//定義常量 , defined()//檢查常量是否定義常量的值只能是標量型別的資料。

11. 常量分為系統內建常量和自定義常量。請說出最常見的幾個系統內建常量?__FILE__ , __LINE__ , PHP_OS , PHP_VERSION

12. 如果定義了兩個相同的常量,前者和後者哪個起作用?前者起作用,因為常量一旦定義就不能被重新定義或者取消定義。

13. 常量和變數有哪些區別?1)常量前沒有$符號;2)常量只能通過define()定義,而不能通過賦值語句定義;3)常量可以在任何地方定義和訪問,而變數有全域性和區域性之分;4)常量一旦定義就不能被重新定義或者取消定義,而變數而通過賦值方式重新定義;5)常量的值只能是標量資料,而變數的資料庫型別有8種原始資料型別。

14. PHP中常用的幾個預定義的全域性陣列變數是哪些?9大預定義的內建陣列變數:$_POST, $_GET, $_REQUEST, $_SESSION, $_COOKIE, $_FILES$_SERVER, $_ENV, $GLOBALS

15. 在實際開發中,常量最常用於哪些地方?1)連線資料庫的資訊定義成常量,如資料庫伺服器的使用者名稱、密碼、資料庫名、主機名;2)將站點的部分路徑定義成常量,如web絕對路徑,smarty的安裝路徑,modelview或者controller的資料夾路徑;3)網站的公共資訊,如網站名稱,網站關鍵詞等資訊。

16. 函式的優越性有哪些?提高程式的可維護性提高軟體的可靠性提高程式的可重用性提高程式的開發效率

17. 如何定義一個函式?函式名區分大小寫嗎?1)使用 function 關鍵字;2)函式命名規則和變數一樣,以字母或者下劃線開頭,而不能以數字開頭;3)函式名不區分大小寫;4)函式名不可以使用已經宣告過的或者系統自建的函式名稱。

18. 什麼是變數的能見度 或者 說是變數作用域?就是變數在程式中的可作用範圍。根據變數的能見度,變數分為區域性變數和全域性變數。

19. 什麼是區域性變數和全域性變數?函式內是否可以直接呼叫全域性變數?區域性變數是函式內部定義的變數,其作用域是所在的函式。如果函式外還有一個跟區域性變數名字一樣的變數,程式會認為它們兩個是完全不同的兩個變數。當退出函式的時候,其中的區域性變數就同時被清除。

全域性變數是定義在所有函式以外的變數,其作用域是整個php檔案,但是在使用者自定義的函式內部是無法使用的。如果一定要在使用者自定義的函式內部使用全域性變數,那麼就需要使用global關鍵字宣告。也就是說如果在函式內的變數前加上golbal來修飾,那麼函式內部就可以訪問到這個全域性變數,不僅可以利用這個全域性變數進行運算而且可以對這個全域性變數進行重新賦值。全域性變數還可以使用 $GLOBALS['var'] 來呼叫。

20. global關鍵詞如何使用?預定義的全域性變數陣列$GLOBALS如何使用?

21. 什麼是靜態變數?如果一個函式內定義的變數前使用關鍵字static來宣告,那麼該變數就是靜態變數。一般函式內的變數在函式呼叫結束後,其儲存的資料將被清除,所佔的記憶體空間也被釋放。而使用靜態變數時,該變數會在函式第一次被呼叫時被初始化,初始化後該變數也不會被清除,當再次呼叫該函式時,這個靜態變數不再被初始化,而能儲存上次函式執行完後的值。可以說靜態變數在所有對該函式的呼叫之間共享。

22. php中函式傳遞引數的方式有哪些?兩者有什麼區別?按值傳遞和按地址傳遞(或按引用傳遞)(1)按值傳遞待傳遞的變數,與傳遞給函式之後的變數是儲存在不同的空間中。所以函式體內對該變數值做的修改,不影響原本的變數值。(2)按地址傳遞使用 符號,表明該引數是以地址的方式傳遞值。並不會將主程式中的指定數值或目標變數傳遞給函式,而是把該數值或變數的記憶體儲存區塊地址匯入函式之中,所以函式體內的該變數和主程式中的該變數在記憶體中是同一個。函式體做的修改,直接影響到函式體外部的該變數的值。

23. 什麼是遞迴函式?如何進行遞迴呼叫?遞迴函式其實就是呼叫自身的函式,但是必須滿足以下兩個條件:1)在每一次呼叫自身時,必須是更接近於最終結果;2)必須有一個確定的遞迴終止條件,不會造成死迴圈。舉例說明:在實際工作中往往會在遍歷資料夾的時候使用。如果有個例子是希望獲取到目錄windows下所有的檔案,那麼先遍歷windows目錄,如果發現其中還有資料夾,那麼就會呼叫自身,繼續往下尋找,依次類推,直到遍歷到再也沒有資料夾為止,這也就是意味著遍歷出來了所有的檔案。

24. 判斷一個函式是否存在?function_exists( string $function_name ) 如果存在,返回true, 不存在則返回 false

25. func()@func()之間有什麼區別?第二個函式呼叫失敗不會報錯,第一個會報錯

26. include()require()函式的用法和區別是什麼?include_once()require_once()呢?

require 的使用方法如 require(“MyRequireFile.PHP”); 。這個函式通常放在 php 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 php 程式網頁的一部份。常用的函式,亦可以這個方法將它引入網頁中。

include 使用方法如 include(“MyIncludeFile.php”); 。這個函式一般是放在流程控制的處理部分中。PHP 程式網頁在讀到 include 的檔案時,才將它讀進來。這種方式,可以把程式執行時的流程簡單化。

他們兩個的用途是完全一樣的,不一定非得哪個放在最前面哪個放在中間。他們最根本的區別在於錯誤處理的方式不一樣。

require一個檔案存在錯誤的話,那麼程式就會中斷執行了,並顯示致命錯誤 
include一個檔案存在錯誤的話,那麼程式不會中斷,而是繼續執行,並顯示一個警告錯誤。

include_once()require_once()在載入之前要判斷是否已經匯入,如果是的話,便不會再次重複匯入同樣的內容。

27. 說出前置++和後置++的區別?前置++是先將變數增加1,然後在將值賦值給原來的變數;後置++是先返回變數的當前值,然後再將變數的當前值增加1.

28. 字串運算子“.”與算術運算子“+”有什麼區別?