1. 程式人生 > >PHP基礎練習(1)

PHP基礎練習(1)

1、PHP中的幾個輸出函式echo,print,printr,sprintf,var_dump的區別

(1)echo是語句,不是函式,不能輸出複雜物件,如陣列和物件,只能列印簡單型別。如int,string;

(2)print是語句,但有返回值,返回值為1,只能輸出一個變數,不能輸出複雜物件,如陣列和物件,只能列印簡單型別。如int,string;

(3)printr是函式,可以列印複雜的資料型別,如陣列,物件等;

(4)sprintf是函式,與printf類似,返回格式化後的文字;

(5)printf是函式,輸出格式化內容,和C語言的printf類似;

(6)var_dump()是函式,輸出變數、型別、字串等內容;

2、JSON資料的格式特點

JSON是一種輕量級的資料交換格式,他是基於ECMAScript的一個子集,特點如下:

(1)鍵/值對集合

(2)是一個有序列表

3、PHP中的常量

__LINk__:檔案中的當前行號

__FILE__:檔案的完整路徑和檔名,如果用在包含檔案中,則返回當前的檔名;

__DIR__:返回檔案所在的目錄,如果被用在包含檔案中,則返回被包括的檔案所在的目錄,等價於dirname(__FILE__);

__FUNCTION__:返回函式的名稱;

__CLASS__:返回類名;

__METHOD__:返回類的方法名;

__NAMESPACE__:返回當前的名稱空間

4、獲取IP地址:$_SERVER['REMOTE_ADDR'],當客戶機使用代理時獲取不到真實的IP地址;

5、PHP快取技術有哪些?

(1)全頁面靜態快取,也就是將頁面全部快取為html靜態頁面,使用者訪問時直接訪問靜態頁面,從而省去伺服器解析過程;

(2)頁面部分快取,

(3)資料快取,通過一個id進行請求,將獲取到 的資料儲存在PHP檔案中,下次直接訪問;

(4)查詢快取,將查詢結果進行快取

常用快取技術有,Redis、MemCache

6、isset、empty、is_null的區別

(1)當變數沒有被定義時,is_null和引數本身是不能被作為引數判斷的。會返回Notice錯誤;

(2)emty和isset都會首先檢查變數是否存在,然後對變數進行檢測,而is_null和引數本身只是檢查變數值是否為null,因此如果變數沒有被定義就會出現錯誤;

(3)isset僅當值為null和未定義時,返回false;

(4)當empty檢測“”,0、“0”、NULL、false、空陣列、未定義變數時均會返回false;

(5)is_null僅判斷變數是否為null,如果變數未定義,則警告;

7、MVC的優缺點

(1)優點

a、可以為一個模型同時建立一個或多個檢視,通過變化-傳播機制可以確保所有相關檢視及時得到模型資料變化,從而使所有關聯的檢視和控制器做到行為同步;

b、可以根據需要選擇、關閉或替換物件;

c、模型的可移植性;

d、潛在的框架設計,可以基於此應用建立應用程式框架;

(2)缺點

a、增加了系統和結構的複雜性

b、檢視和控制器過於緊密的連線

c、檢視對模型資料的低效率訪問

d、目前一些高階的介面工具或構造器還不支援MVC模式,改造這些工具的代價是很高的,這也限制了MVC的應用;

8、session和cookie的區別與聯絡以及session共享方案的解決

(1)session儲存在服務端,cookie儲存在客戶端

共享方案:

(1)使用資料庫儲存session,即使伺服器宕機了也沒事

9、常用正則表示式

匹配中文字元的正則表示式: [\u4e00-\u9fa5] 
匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 
匹配空行的正則表示式:\n[\s| ]*\r 
匹配HTML標記的正則表示式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
匹配首尾空格的正則表示式:(^\s*)|(\s*$) 
匹配Email地址的正則表示式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
匹配網址URL的正則表示式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 
匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
匹配國內電話號碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 
匹配騰訊QQ號:^[1-9]*[1-9][0-9]*$